Distinct, group by et order by
Voila, je dois faire un mini forum et affiché l'ordre des différents topics en fonction de la date du dernier post.
Mes tables ressemblent grosso modo à ça :
poste (id_poste, #auteur_poste, #sujet_poste, date_poste, texte_poste ) // post relatif à un topic
sujet (id_sujet, #auteur_sujet, texte_sujet, date_sujet) // table des topics
Mon problème est que je n'arrive pas à faire une requete qui puisse faire ce que je veux sans afficher autant de fois le sujet qu'il n'y a de reponse dedans...
Si j'utilise la fonction DISTINCT dans mon select, absolument rien ne change par rapport à une requete ou je ne l'utilise pas. Si j'utilise GROUP¨BY, mon tri ne marche plus...
Code:
1 2 3 4 5 6 7 8 9
|
// Requete ne tenant pas compte de l'ordre :
select poste.date_poste, poste.sujet_poste, user.login_user, user.id_user from poste, user where user.id_user = poste.auteur_poste group by poste.sujet_poste order by poste.date_poste desc limit 0, 10
// requete tenant compte de l'ordre, mais affichant autant de fois le topic qu'il n'y a de réponse :
select poste.date_poste, poste.sujet_poste, user.login_user, user.id_user from poste, user where user.id_user = poste.auteur_poste order by poste.date_poste desc limit 0, 10
// requete dont le résultat est strictement identique à celui de la requete précédente :
select distinct poste.sujet_poste, poste.date_poste, user.login_user, user.id_user from poste, user where user.id_user = poste.auteur_poste order by poste.date_poste desc limit 0, 10 |
Nottez que j'ai enlevé la jointure avec la table USER pour plus de clareté dans la requete.
Quelqun pourrait-il m'expliqué pourquoi cela ne marche pas ?