2014-09-19 62 views
0

好的,我一直在努力與這一個很遠,任何援助將不勝感激。來自多個表的多個ORDER BY

我有2個表格:

表名稱:列名稱。 (只顯示相關的列名)

Topics: topic_id, topic_cat, topic_stick 

Replies: reply_id, reply_date, reply_topic 

我試着去獲得所有(topic_id)的那個=說1,但在此我需要它有序,使我得到的最新(REPLY_DATE),並且具有所有(topic_stick)在頂部。

Reply_topic = topic_id 

我一直沒有成功語句後試圖聲明: 這一直是我最親密的嘗試,但表不排序,以我的願望。

SELECT topic_id 
FROM topics, replies 
WHERE 
reply_topic = topic_id and 
topic_cat = 1 
GROUP BY topic_id 
ORDER BY reply_date DESC, topic_stick ASC 

回答

1
SELECT 
    t.topic_id, 
    t.topic_cat, 
    t.topic_stick, 
    r.reply_id, 
    r.reply_date, 
    r.reply_topic  
FROM replies r 
INNER JOIN topics t on t.topic_id = r.reply_topic 
WHERE 
t.topic_cat = 1 
GROUP BY r.reply_topic 
ORDER BY r.reply_date DESC 
+0

我之所以使用GROUP BY的原因是爲了得到最近回覆的線程,並且頂部還有粘連線程。當我運行你的語句時,它會返回每個線程的每個回覆。 – DirtyRedz 2014-09-19 20:13:44

+0

@DirtyRedz好的,我想我現在更瞭解你的要求了。我已更改查詢以從答覆中選擇並按reply_topic分組。 – Donal 2014-09-19 20:18:14

+0

感謝只需添加第二個ORDER BY,它的工作表示感謝 – DirtyRedz 2014-09-19 20:31:52

0

反向您的ORDER BY子句中的順序。你想:

ORDER BY Topics.topic_stick, Replied.reply_date DESC

你提到「如果他們說1」 - 如果你正在使用0意味着無粘性,你將不得不作出一個DESC爲好。