我想寫一個查詢來選擇我所有的論壇並獲得相應的最新帖子(包括作者)......但我失敗了。選擇所有論壇並獲取最新帖子..怎麼樣?
這是我的結構:
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 btw。
哦:我忘了: 目前我運行所有「類別」(擁有parent_forum = NULL的論壇),然後爲每個論壇運行一個額外的查詢(這就是爲什麼您在我的查詢中看到parent_forum = 1的原因)。有沒有更好的方法來做到這一點?
編輯: 我的最後一個職位是在forum_posts
我也不太瞭解' 「類別」'你的第二個問題。我建議爲此打開一個*新問題。每個問題的一個問題是它應該如何。你可以隨時引用這個上下文來保證一些多餘的輸入。 –
我的意思是每個論壇都有一個「parent_forum」。如果「parent_forum」爲NULL,那麼它就是一個帶有subforums的類別。 – CryNickSystems