Я пытаюсь написать запрос, чтобы выбрать все мои форумы и получить соответствующую последнюю запись (включая автора) … но я не смог.
Это моя структура:
forums forum_threads forum_posts ---------- ------------- ----------- id id id parent_forum (NULLABLE) forum_id content name user_id thread_id description title user_id icon views updated_at created_at created_at updated_at last_post_id (NULLABLE)
Это мой текущий запрос:
SELECT forum.id, forum.name, forum.description, forum.icon, post_user.username FROM forums AS "forum" LEFT JOIN forum_posts AS "post" ON post.thread_id = ( SELECT id FROM forum_threads WHERE forum_id = forum.id ORDER BY updated_at DESC LIMIT 1) LEFT JOIN users AS "post_user" ON post_user.id = post.user_id WHERE forum.parent_forum = 1 GROUP BY forum.id
Конечно, этот запрос неверен, потому что в одном потоке есть много сообщений …
Может ли кто-нибудь помочь? Я использую PostgreSQL кстати.
О: Я забыл: в настоящее время я просматриваю все «категории» (форумы с parent_forum = NULL), а затем запускаю дополнительный запрос для каждого форума (поэтому в моем запросе вы видите parent_forum = 1). Есть ли лучший способ сделать это?
EDIT: мой последний пост – это сообщение с самой новой датой в updated_at в forum_posts