0
我已經嘗試了很多類似的Stack可用的問題,但是我發現所有這些問題都不斷得到錯誤用戶的user_name,我真的被卡住了花了整整一天的時間試圖弄清楚這一點。MySQL:在論壇主題列表中選擇最近的海報
我有一個論壇,論壇內是一個線程列表,然後在線程內人們可以發帖,當用戶查看論壇,並看到線程列表時,我希望他們最近的帖子和用戶名顯示
這是我當前的SQL查詢:
SELECT t.thread_id, t.featured, t.title, t.post_count, t.view_count, t.closed, p.post_id AS latest_reply, if(u2.user_name IS NOT NULL, u2.user_name, u.user_name) AS latest_reply_user_name, MAX(p.timestamp) as timestamp, u.user_name
FROM forum_thread AS t
LEFT JOIN forum_post AS p ON(t.thread_id = p.thread_id
AND p.post_id=(SELECT MAX(p.post_id) FROM forum_post WHERE thread_id=p.thread_id))
LEFT JOIN forum_post as p2 ON (p2.post_id = p.post_id)
LEFT JOIN user as u ON(t.id = u.id)
LEFT JOIN user as u2 ON (p2.id = u2.id)
WHERE t.forum_id = :forum_id AND t.sticky=:sticky AND t.removed=0
GROUP BY t.thread_id
ORDER BY latest_reply DESC
LIMIT :limit_bottom, :limit_top
的問題是u2.user_name似乎是隨機選擇的,因此latest_reply_user_name是隨機選擇的。 u2.user_name應該是最近發佈的用戶名。
如果你可以用一些示例數據創建一個SQLfiddle,它會更容易幫助。 –
順便提一句,這是*在MySQL標籤下SO上最常見的問題。 – Strawberry
你不需要'p2',它和'p'一樣。 – Barmar