Sasume (./4) :
Je pense que pour le 2e problème il n’y a pas de solution en SQL.

Pour le 1er, tu peux ajouter un attribut expediée à la table Commande, qui indique si la commande a déjà été expédiée au moins une fois (donc dans le where de la requête tu vérifies que cet attribut ne vaut pas 0, et tu peux virer le case du select).
Ah oui, mais je dois modifier la structure, sur laquelle je n'ai pas la main :/ (j'ai oublié de le préciser dans le post initial).
vince (./5) :
et en faisant un group by sur "MONTH(etats.date)" ? Genre : select tes colonnes from tes tables where ton refto broup by MONTH(etats.date) order by etats.date ?
Bah c'est exactement ce que j'ai fait, non ? (sauf que je l'ai fait par semaine et non pas par mois)