我有兩個表:一個主題表和一個連接的評論表,都帶有時間戳列。我想訂購主題列表,以便最新評論的主題位於頂部。但是,如果主題沒有評論,我希望它按創建日期排序。 換句話說我想,如果他們有沒有意見訂購它,這樣的主題是由他們創造僅日期排列 - 基本上就像任何論壇。例如,如果在主題B(非空)之後創建了主題A(空),但主題B具有最近的回覆,那麼順序應該是B,A.我不希望頂部的所有空主題如果如果它們是新的,它們就會老舊或者處於底部。如果其他列爲空,則按一列排序
我試過IF ISNULL聲明,但它適用於整列,而不是每個單排,所以我結束與空線程要麼停留在飼料的頂部或底部。
我猜我不得不構建,只有從每個主題的最新評論一個虛擬列...?
以下是聲明全文:
SELECT
$showbody,
Topics.Title,
Topics.id AS tID,
Topics.Timestamp,
Topics.MemberID,
Users.id,
Users.FirstName,
Users.LastName,
GROUP_CONCAT(DISTINCT Tags.Keywords SEPARATOR ', ') AS Tags,
COUNT(Comments.id) AS NumberOfComments,
(
SELECT COUNT(Comments.id)
FROM Comments
LEFT JOIN Views ON Comments.TopicID = Views.TopicID
WHERE Comments.Timestamp > Views.Visited
) AS NewComments
FROM Topics
LEFT JOIN Users ON Topics.MemberID = Users.ID
LEFT JOIN Comments ON Topics.id = Comments.TopicID
LEFT JOIN Tags ON Topics.id = Tags.TopicID
WHERE Topics.id NOT IN (
SELECT Tags.TopicID
FROM Tags
WHERE Keywords IN (
SELECT Tag
FROM Filters
WHERE MemberID = '$_SESSION[SESS_MEMBER_ID]'
)
GROUP BY Tags.TopicID
)
GROUP BY Topics.id
ORDER BY Comments.Timestamp, Topics.Timestamp DESC LIMIT $plim
任何幫助,將不勝感激
你可以在這裏粘貼你的代碼嗎? – Bajrang
請出示實際的SQL語句... – Yahia