В целях устранения как можно большего количества вложенных запросов я пытаюсь оптимизировать следующий запрос:
SELECT fp.id,
fp.user_id,
COUNT(c.id) AS num_replies,
c2.created AS latest_activity_time, c2.user_id AS latest_activity_user_id
FROM forum_posts fp
LEFT JOIN comments c ON c.object_id = fp.id
LEFT JOIN (SELECT created, user_id
FROM comments
ORDER BY created DESC
LIMIT 1) AS c2 ON fp.id = c2.object_id
WHERE fp.deleted != 1
GROUP BY fp.id
Извините, если вы обнаружите какие-либо ошибки ... Я попытался сделать этозапросите только релевантные части, и я мог ошибиться где-то в процессе
Итак, в основном, здесь мы имеем таблицу сообщений на форуме и таблицу ответов на эти сообщения.Каждое сообщение на форуме может иметь несколько ответов.Первое объединение используется для подсчета общего количества ответов, а второе объединение используется для получения информации о самом последнем ответе.Из этого запроса я получаю что-то вроде этого:
Итак, я пытаюсь выяснить, как я могу это сделать, не прибегая к этому вложенному запросу.,Любая помощь, которую вы, ребята, можете оказать, была бы чрезвычайно полезна.
Спасибо!
Редактировать : Я немного скорректировал запрос, чтобы отразить тот факт, что мне нужно отступитьне только latest_activity_time
, но и latest_activity_user_id
.Извините за путаницу!