2011-09-29 104 views
0

我們有一個如此排列的表:ID,Album_ID和Time_Voted。每次用戶投票時, 它創建一個新的記錄。我們希望顯示前五個Album_ID,(每週末有最多包含該Album_ID的記錄)。我知道如何做到這一點的唯一方法是選擇過去一週的所有記錄,然後對結果運行「while」,然後遍歷數組,並在每次找到一個數組並添加一個+1到對應的Album_ID鍵相同的Album_ID的實例。這是非常低效的,我相信有一個通過SQL查詢來完成這個任務的好方法,但是這超出了我的知識水平。按照包含特定字段的記錄數量的順序選擇記錄

所以問題是,有沒有辦法通過查詢獲得每個album_ID數量的計數,然後按照這個計數來安排?

這是我正在使用的原始SQL語句。 YEARWEEK的東西只是上週纔拿到的。

SELECT * FROM wp_album_votes WHERE YEARWEEK(Time_Voted) = YEARWEEK(CURRENT_DATE - INTERVAL 7 DAY) ORDER BY Album_ID 

回答

6
SELECT Album_ID, COUNT(*) AS NumVotes 
    FROM wp_album_votes 
    WHERE YEARWEEK(Time_Voted) = YEARWEEK(CURRENT_DATE - INTERVAL 7 DAY) 
    GROUP BY Album_ID 
    ORDER BY NumVotes DESC LIMIT 5 
+0

呸,你6秒:) –

+0

完美打我吧!如果我只能給出2個正確的答案!猜猜+1必須要做! – Cyprus106

1
select album_id, count(album_id) 
from wp_album_votes 
group by album_id 
order by 2 desc. 

你可以用其他文字和日期在這個基礎結構...