Forum Clubic

Requête MySQL avec groupage des résultats

Bonjour,
Je crée une requête pour sélectionner des sociétés dont certaines ont un abonnement, d’autres non, toutes ont une date de dernière mise à jour.

J’aimerai que le classement s’effectue comme suit :
1- les sociétés abonnées dont la date d’expiration est supérieure à aujourd’hui, de la date de MAJ la plus récente à la plus ancienne
2- les sociétés abonnées dont la date d’expiration est inférieure à aujourd’hui, de la date de MAJ la plus récente à la plus ancienne.

Voici ce que j’ai fait :
SELECT * FROM t_cie ORDER BY CIE_datExpAbo DESC,CIE_datMaj DESC

Si les sociétés abonnées figurent bien en premier, l’ordre s’effectue sur la date d’expiration d’abonnement, et non sur la dernière MAJ.

J’essaye d’utiliser un GROUP BY et HAVING mais les résultats ne s’affichent pas en entier.
Genre :
GROUP BY CIE_intId HAVING CIE_datExpAbo>=".date(‘Y-m-d’)."ORDER BY CIE_datMaj DESC

Heeeeeeelp ^^
et merci d’avance
Edité le 03/10/2008 à 13:32

le schéma des tables pourrait aider :slight_smile:

Normal.

Si tu fais un GROUP BY, tu regroupes tes lignes selon un critère.

  1. si ce critère est unique dans ta table, il ne sert à rien de faire le GROUP BY
  2. Pour le reste, tu trie par la date d’abonnement. C’est donc logique que tu ai ce problème.

Tu peux faire ça :

ORDER BY IF(CIE_datExpAbo>=CURDATE(),1,0), …

Le IF va choisir 1 ou 0 selon la date d’abo.

Super le IF, c’est exactement ce que je cherchais (mal) ^^

Merci encore !