Без да знаете структурата на вашата база данни, тя трябва да изглежда по следния начин. Имайте предвид, че трябва да замените *
знаци с по-ясни списъци с колони, от които действително се нуждаете.
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
Имайте предвид, че ако просто се опитвате да получите бройки, суми и подобни неща, добра идея е да кеширате част от тази информация. Например, може да искате да кеширате броя на коментарите в таблицата с публикации, вместо да ги броите при всяка заявка. Преброяване и актуализиране на броя на коментарите само при добавяне/премахване на коментар.
РЕДАКТИРАНЕ: Разбрах, че също така искате да прикачите потребителски данни към всеки коментар. Можете да се ПРИСЪЕДИНЕТЕ към една и съща маса повече от веднъж, но става грозно. Това може да се превърне в наистина скъпо запитване. Включвам и пример за това как да правите псевдоними на колони, така че да е по-малко объркващо:
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