0
我試圖在我的獎勵系統中列出前20名收入者。將日期納入此GROUP BY和INNER JOIN select語句
下面的語句完美的作品表明:
SELECT
S.User_ID As UserID,
CONCAT(S.User_Forename, " ", S.User_Surname) AS StudentName,
T.TotalPoints
FROM
student S
INNER JOIN
(SELECT
Datetime, Recipient_ID, SUM(Points) AS TotalPoints
FROM
transactions
GROUP BY
Recipient_ID) T
ON
S.User_ID = T.Recipient_ID
ORDER BY TotalPoints DESC
LIMIT 20
來然而,想起來了,明年我需要包括日期範圍(即顯示收入最高的那所學校一年只)。
出於測試目的,我試圖修改下面的語句,其中包括一個LESS THAN DATETIME
選擇:
SELECT
S.User_ID As UserID,
CONCAT(S.User_Forename, " ", S.User_Surname) AS StudentName,
T.TotalPoints
FROM
student S
INNER JOIN
(SELECT
Datetime, Recipient_ID, SUM(Points) AS TotalPoints
FROM
transactions
GROUP BY
Recipient_ID) T
ON
S.User_ID = T.Recipient_ID
WHERE t.Datetime < 2012-03-20
ORDER BY TotalPoints DESC
LIMIT 20
我也試過這樣:
SELECT
S.User_ID As UserID,
CONCAT(S.User_Forename, " ", S.User_Surname) AS StudentName,
T.TotalPoints
FROM
student S
INNER JOIN
(SELECT
Datetime, Recipient_ID, SUM(Points) AS TotalPoints
FROM
transactions
WHERE Datetime < 2012-03-20
GROUP BY
Recipient_ID) T
ON
S.User_ID = T.Recipient_ID
ORDER BY TotalPoints DESC
LIMIT 20
這兩項的但顯示空結果集。
如果我做了一個簡單的SELECT * FROM transactions WHERE Datetime < 2012-03-20
,返回25K以上的結果。
我哪裏錯了?
你嘗試在你的日期值一個單引號? '2012-03-20' – Taryn 2012-07-09 15:43:19
我很好奇。也許我錯過了一些東西,但是日期時間不在聚合或組合語句中。它在T子查詢中會發生什麼? – 2012-07-09 15:44:45
@dunc嘗試bluefeet的建議。它應該工作。 – 2012-07-09 15:47:03