Nie znając struktury Twojej bazy danych, powinna wyglądać mniej więcej tak. Pamiętaj, że powinieneś zastąpić *
znaki z bardziej wyraźnymi listami kolumn, których faktycznie potrzebujesz.
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
Pamiętaj, że jeśli próbujesz tylko uzyskać obliczenia, sumy i tym podobne, dobrym pomysłem jest buforowanie niektórych z tych informacji. Na przykład możesz chcieć buforować liczbę komentarzy w tabeli postów zamiast liczyć je przy każdym zapytaniu. Licz i aktualizuj liczbę komentarzy tylko podczas dodawania/usuwania komentarza.
EDYTUJ: Zdałem sobie sprawę, że chcesz również dołączyć dane użytkownika do każdego komentarza. Możesz DOŁĄCZYĆ do tego samego stołu więcej niż raz, ale robi się to brzydko. Może to zamienić się w naprawdę drogie zapytanie. Dołączam również przykład, jak aliasować kolumny, aby było mniej zagmatwane:
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