Comment faire fonctionner GROUP BY et ORDER BY ensemble?

WRInaute accro
SELECT * FROM table GROUP BY cat ORDER BY date DESC

cela groupe normalement mais ca ressort toujours l'enregistrement le plus ancien, le ORDER BY date DESC n'est pas pris en compte.

?? c'est quoi la formule magique
 
WRInaute discret
je ne sais pas ce que tu veux faire avec ta requête mais c'est clair qu'elle n'a aucun sens dans sa formule actuelle.

quelques regles :
- On utilise le group by si on a un calcul a effectuer dans le select : sum, count, avg...
- Toutes les rubriques qui apparaissent dans le select doivent apparaître dans le group by.

ex :
Code:
select toto, titi, count(id)
from matable
group by toto, titi

si ton but est tout simplement de trier tes données alors aucune utilité au group by :
Code:
SELECT * FROM table ORDER BY date DESC

on pourra t'aider encore plus si tu nous dis ce que tu veux avoir.
 
WRInaute passionné
comme le dit jamalofski il faut mettre un MAX(date) (ou MIN(date), ...) sinon il faut que la zone date soit dans le group by :
Code:
SELECT cat, MAX(date) AS date_max FROM table GROUP BY cat ORDER BY date_max DESC
 
WRInaute discret
Ah dsl je croyais que tu voulais comprendre comment ça fonctionne pour que tu n'ailles plus besoin de personne dans l'avenir pas qu'on fasse les requêtes à ta place!!! Le souci avec cette dernière solution est que dans pas longtemps on aura un nouveau message "Comment faire fonctionner GROUP BY et ORDER BY ensemble 2" quand t'auras à récupérer une information supplémentaire avec ta requête
 
Discussions similaires
Haut