2011-04-10 24 views
0

如果您對論壇很熟悉,當問題得到解答時,它會移至列表頂部。這個SQL查詢如何工作?現在,我的查詢如下:通過最近回答的問題排序SQL查詢(如論壇)

SELECT *, 
(SELECT count(*) FROM tblQA Q1 WHERE Q1.intResponseID = Q2.intQAID) AS answercount, 
(SELECT cUsername FROM tblUsers tblU WHERE Q2.intPosterID = tblU.intUserID) AS username,  
(SELECT CASE WHEN DAY(dSortDateTime) = DAY(NOW()) THEN DATE_FORMAT(dSortDateTime, 'Today at %l:%i%p') 
ELSE DATE_FORMAT(dSortDateTime, '%b %e, %l:%i%p') END) AS post_time 
FROM tblQA Q2 WHERE cCategory IN ('Football','Baseball','Basketball','Hockey') 
ORDER BY dSortDateTime DESC, dSortDateTime DESC LIMIT 40 

因此,當用戶響應一個問題,我想的是反彈的問題列表的頂部。現在,查詢運行的方式,它不這樣做。

期待您的幫助。

附加信息: dSortdatetime =日期( 'YMD H:I:S')

+2

當一個人做*研究*時,他*忽略*所有不必要的東西,如用戶名,只專注於當前的目標。讓整個事情更容易理解。當人們只是要求免費的codez時,他必須提供完整的信息,包括所涉及的所有表的表結構以及所有表關係的描述。 – 2011-04-10 03:54:43

回答

1

我不知道你的架構,所以我不能給你實際的SQL,但你需要存儲的時間問題得到了回答(或者在問題表和答案表之間加入一個JOIN以獲得每個問題的最新答案)。然後,您按回答時間DESC排序。

+0

因此,dSortdatetime與日期('Y-m-d H:i:s')信息一起存儲。所以它也有時間。在我的查詢中,我按降序排序dSortdatetime。但是,這並不正確。 – BigMike 2011-04-10 03:51:13

+0

你期待什麼結果?你會得到什麼?它排序不正確嗎? – 2011-04-10 04:12:53

+0

回答問題時,應將問題移至問題列表的頂部。 – BigMike 2011-04-10 04:42:35

0

問題是它沒有正確排列同一天發生的答案嗎?如果是這樣,那是因爲DATE具有一天的粒度。您可能希望該列成爲DATETIME以存儲時間(粒度爲一秒)。