2017-06-18 3 views
0

Ich muss Beiträge in einfache Forum-Struktur zu organisieren. Jeder Post hat Titel, Beschreibung, post_id und parent_post_id. Posts mit parent_post_id = -1 sind Root-Foren der obersten Ebene.SQL-Abfrage zum Zählen aller Kinder Forenthemen und Beiträge

Forum 1 
    - Topic 1 
    - Post 1 
    - Post 2 
Forum 2 
    - Topic 2 
    - Post 3 
    - Post 4 

Wie zählen alle verschachtelten Beiträge für Forum 1, Forum 2 usw.?

Bisher habe ich die folgende Abfrage

select forum.title, count(comment.post_id) as count from post as forum 
    left outer join post as topic on topic.parent_post_id = forum.post_id 
    left outer join post as comment on comment.parent_post_id = topic.post_id 
    where forum.parent_post_id = -1 
    group by forum.title 

aber es gibt falsche Ergebnisse.

+0

die 'GROUP BY' entfernen und wählen Sie die Spalten, die Sie wollen. Ihre Abfrage hat keine große Beziehung zu den von Ihnen angegebenen Ergebnissen. Es würde helfen, wenn Sie Ihre gewünschten Ergebnisse als Ergebnis mit festen Spalten und Zeilen festgelegt haben. –

+0

Dann sagt Mysql "SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung ... inkompatibel mit sql_mode = only_full_group_by" – ymakux

+0

Konnte das falsche Ergebnis sein, weil Sie ** link join ** – Frank

Antwort

1

versuchen diese

select forum.title, count(comment.post_id) as count from (select * from post where parent_post_id = -1) as forum 
    left outer join post as topic on topic.parent_post_id = forum.post_id 
    left outer join post as comment on comment.parent_post_id = topic.post_id 
    group by forum.title 
Verwandte Themen