我有一個非常基礎的論壇系統。三個主表,主題,評論和用戶都有你想象的所有常見字段,例如自動遞增主鍵和外鍵,所以我不認爲我需要詳細說明全部內容摘要最近張貼的主題與MySQL
我想要做的是獲得最近發佈的主題列表。列表視圖應顯示主題標題,初始評論/帖子的正文以及作者的姓名,但該列表應與最近最先發布的主題一起排序。
我不是很擅長MySQL以外的最基本的查詢。我顯然可以將它分解成多個查詢,但我希望在一個查詢中獲得性能。
這是我第一次想到的,但它根據第一篇文章的時間排序。
SELECT topic.id as topic_id, topic.title as topic_title, topic.datePosted as datePosted, topic.views as views, topic.numComments as numComments,
comment.ID as commentID, comment.body as body,
user.ID as userID, user.firstName, user.lastName, user.title as user_title, user.city, user.state, user.thumbnail
FROM comment INNER JOIN topic ON comment.topicID = topic.id
INNER JOIN user ON comment.userID = user.id
WHERE comment.id
IN (
SELECT min(comment.id)
FROM COMMENT INNER JOIN topic ON comment.topicID = topic.id
GROUP BY topic.id
)
ORDER BY commentID desc';
我正在看這個。彈出的第一件事是,datePosted應該是註釋表中的一個字段,而不是主題表,對不對?我假設你想要每個評論時間戳,而不僅僅是最後評論的時間戳? – 2011-05-31 03:28:43
@burk我認爲@King Skuppus是你想要發佈的最新評論後發佈的。 – TheVillageIdiot 2011-05-31 03:39:27
我實際上有一個datePosted字段的評論和主題表。我意識到一個主題的日期可以通過查找最早的評論來推斷,但我試圖保存信息而不是不斷地計算它。我也猜想我可以爲每個主題設置另一個字段,只保存最近發佈的帖子的時間戳,然後我就不會有這個問題。但我很好奇如何這樣做。 – rburk 2011-05-31 03:44:04