Pokud neznáte strukturu databáze, měla by vypadat nějak takto. Všimněte si, že byste měli nahradit *
znaky s explicitnějším seznamem sloupců, které skutečně potřebujete.
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
Všimněte si, že pokud se jen snažíte získat počty, součty a podobné věci, je dobré si některé z těchto informací uložit do mezipaměti. Můžete například chtít uložit do mezipaměti počet komentářů v tabulce příspěvků namísto jejich počítání při každém dotazu. Počítejte a aktualizujte počet komentářů pouze při přidávání/odebírání komentáře.
UPRAVIT: Uvědomili jste si, že ke každému komentáři chcete také připojit uživatelská data. Můžete se připojit ke stejnému stolu více než jednou, ale je to ošklivé. To by se mohlo stát opravdu drahým dotazem. Zahrnuji také příklad, jak vytvořit alias sloupců, aby to bylo méně matoucí:
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