2012-10-26 139 views
-1

我已經在一個職位提交給論壇的默認父爲0,當後提交作爲回覆一個表叫cf_postsPHP/MySQL的論壇帖子訂購

ID pk 
user INT 
subject VARCHAR 
body TEXT 
datetime TIMESTAMP 
parent INT 
category INT 
mod INT 

,那麼其父是原始帖子的ID。

我該如何做到這一點,使論壇主頁的默認視圖被命令最近更新的帖子(包括最新的回覆)將在堆的「頂部」,並按日期順序?什麼是PHP/MySQL查詢?

我對此所見到的唯一解決方法是單獨的主題和答覆表,但如果可能的話,我想遠離這種方法。

我嘗試過並失敗的一種解決方法是GROUP BY父項。 但是,這將所有沒有回覆的主題組合在一起。

我還沒有嘗試的另一個想法是使原始帖子的父ID與帖子ID匹配,並且不在輸出中包含匹配的ID和父ID。

我期待聽到您的想法。

+0

您有什麼理由遠離單獨的主題和答覆表? – raidenace

+0

@Raidenace一個話題只是一個特殊的帖子,沒有理由創建一個單獨的表。 – NullUserException

+0

你可以知道它是否是一個話題,因爲它可能沒有父項嗎? (太?) –

回答

0
SELECT mainPost.subject, lastPost.datetime 
FROM cf_posts cfp, 
(
SELECT * 
FROM cf_posts subPost 
WHERE subPost.parent = mainPost 
ORDER BY subPost.datetime DESC 
LIMIT 1 
)lastPost 
WHERE mainPost.parent IS NULL 

這是簡單的,所以可能有一些語法問題,但我認爲這應該有所幫助。

0

您可以執行以下操作:查詢您需要的每個單獨的東西,或許查詢每個主題,然後您可以使用UNION將它們聚合在一起以獲取一個列表。現在保留訂單的技巧如下。對於每個單獨的查詢,將一列添加到返回的結果sort中,並將其中的每個實例設置爲更高的int值,然後可以保證最終結果被正確排序。請查看UNION以瞭解我所談論的內容。