Bonjour,
je rencontre une petite difficulté pour réussir la requête suivante.
J'ai une table forum :
id (id auto incrémenté)
sujet (sujet du topic)
thread (id parent pour conserver le fil de la discussion)
date
J'aimerais :
- afficher la liste des sujets
- compter le nombre de réponses (donc le nb d'entrée ou le thread = id du parent)
- classer par date de la derniere réponse.
Etant plutot nullard en SQL, j'ai commencé par la requête suivante :
Cette requête marche parfaitement, et me compte correctement le nb de réponses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT `t`.sujet, `t`.id, `t`.thread, COUNT( reponses.id ) AS `nb_reponses` FROM `forums` AS `t` LEFT JOIN `forums` AS `reponses` ON t.id = reponses.thread GROUP BY `t`.`thread` ORDER BY t.id DESC LIMIT 20
Maintenant, je tente de rajouter la dernière réponse, juste son id.
Le classement fonctionne bien, par contre le décompte des réponses me sort des résultats incongrus ( 196 réponses au lieu de 14 par exemple...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT `t`.sujet, `t`.id, `t`.thread, COUNT(reponses.id) AS `nb_reponses`, MAX(lastmsg.id) AS `idlastmsg`, MAX(lastmsg.time) AS `timelastmsg` FROM `forums` AS `t` LEFT JOIN `forums` AS `reponses` ON t.id = reponses.thread LEFT JOIN `forums` AS `lastmsg` ON t.id = lastmsg.thread GROUP BY `t`.`thread` ORDER BY `timelastmsg` DESC LIMIT 20
Quelqu'un peut me mettre sur la piste ?
merci
Partager