按最近回答的问题排序SQL查询(如论坛)

时间:2011-04-10 03:30:05

标签: php mysql

如果您熟悉论坛,当问题得到解答后,它会移至列表顶部。这个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 = date('Y-m-d H:i:s')

2 个答案:

答案 0 :(得分:1)

我不知道你的架构,所以我不能给你实际的SQL,但你需要存储问题得到解答的时间(或者在问题和答案表之间进行联接以获得最新答案)对于每个问题)。然后按答案时间DESC订购。

答案 1 :(得分:0)

问题是它没有正确排序同一天发生的答案吗?如果是这样,那是因为DATE具有一天的粒度。您可能希望该列为DATETIME以存储时间(粒度为一秒)。