Uden at kende din databasestruktur, burde den se sådan ud. Bemærk, at du bør erstatte *
tegn med mere eksplicitte lister over kolonner, du faktisk har brug for.
SELECT p.*, c.*, u.* FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id
Bemærk, at hvis du bare prøver at få tal, summer og lignende ting, er det en god idé at cache nogle af disse oplysninger. Det kan for eksempel være en god idé at cache antallet af kommentarer i posttabellen i stedet for at tælle dem for hver forespørgsel. Tæl og opdater kun kommentarantallet, når du tilføjer/fjerner en kommentar.
EDIT: Indså, at du også ville vedhæfte brugerdata til hver kommentar. Du kan slutte dig til det samme bord mere end én gang, men det bliver grimt. Dette kan blive til en rigtig dyr forespørgsel. Jeg inkluderer også et eksempel på, hvordan man kalder kolonner, så det er mindre forvirrende:
SELECT p.*, c.*, u.name as post_author, u2.name as comment_author FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id
LEFT JOIN users u2 ON u2.id = c.author_id