2010-12-14 19 views
0

J'ai une table MySQL 'Commentaires' qui a les champs suivants:MySQL: Sélectionner les commentaires et le nombre de réponses qu'ils ont

  • id
  • texte
  • parent_id (NULL par défaut)

Fondamentalement, je veux sélectionner tous les commentaires qui ont un parent_id NULL, et le nombre total de leurs réponses. Ce système de commentaire n'a qu'un seul niveau de réponses. Le résultat ressemblerait à quelque chose comme:

------------------------------------------------- 
| id | Text      | total_replies | 
------------------------------------------------- 
| 1 | This is a comment  | 0    | 
------------------------------------------------- 
| 5 | another comment   | 3    | 
------------------------------------------------- 
| 7 | a different comment  | 1    | 
------------------------------------------------- 

votre aide :) Appréciez

Répondre

1

Ce serait probablement someting comme:

select c.id, c.Text, count(reply.id) as total_replies 
from comments c 
left join comments reply on c.id = reply.parent_id 
where c.parent_id is null 
group by c.id 

Si je comprends bien que les commentaires et les réponses sont dans le même table.

0

réponses sont dans le supposant même table:

SELECT c1.id, c1.text, COUNT(c2.id) total_replies 
FROM comments c1 
LEFT JOIN comments c2 ON c2.parent_id = c1.id 
WHERE c1.parent_id IS NULL 
GROUP BY c1.id, c1.text 
ORDER BY c1.id 
+0

Comment 'c1.parent_id = c2.id' et' c1.parent_id est null'? – Danosaure

+0

Correction de la jointure. –