我正在建立一個網站與積分系統,類似於Stackoverflow;SQL查詢 - 如何在過去24小時內顯示點數?
這是我用來顯示頂級用戶(所有時間)代碼:
SELECT id, username, active, points
FROM users
WHERE active='1'
ORDER BY points DESC
但我怎麼能顯示在24小時內(也指出)上的用戶?
我正在建立一個網站與積分系統,類似於Stackoverflow;SQL查詢 - 如何在過去24小時內顯示點數?
這是我用來顯示頂級用戶(所有時間)代碼:
SELECT id, username, active, points
FROM users
WHERE active='1'
ORDER BY points DESC
但我怎麼能顯示在24小時內(也指出)上的用戶?
你將不得不做出一個特殊的表,將記錄時(以及如何很多)指出用戶收到。
編輯
例如表points
user_id time awarded_points
-------------------------------------
1 1298745681 10
...
然後你只問今天榮獲WHERE time > UNIX_TIMESTAMP(CURDATE())
或在過去24小時內WHERE time > UNIX_TIMESTAMP()-24*3600
點。
使用例:
SELECT u.id, u.username, u.active, SUM(p.awarded_points) AS points
FROM points AS p
LEFT JOIN users AS u ON u.id = p.user_id
WHERE time > UNIX_TIMESTAMP(CURDATE())
AND u.active = '1'
GROUP BY p.user_id
ORDER BY points DESC
我還建議增加一個LIMIT的查詢,特別是如果你的網站變得大。
你需要另一個表,其中所有用戶activites /點將被寫
而不是與此表加盟,條件24H
添加一個表格記錄每個用戶的接收點,並帶有外鍵關係到用戶表
例如一臺命名爲以下幾列
然後您需要查詢此表
SELECT SUM(numberofpoints), userid
FROM points
WHERE datetimeallocated >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY userid
ORDER BY SUM(numberofpoints) DESC
什麼是24日?日期? – Jonah
你也需要創建'datetime'字段。 – Sarfraz
未經Stack Overflow的同意,您無法創建基於積分系統的網站。 – Shoe