2011-09-29 3 views
0

ID, Album_ID 및 Time_Voted와 같이 배열 된 테이블이 있습니다. 사용자가 투표 할 때마다 은 새 레코드를 만듭니다. 매주 말에 해당 앨범 _ID가 포함 된 레코드가 가장 많은 상위 5 개의 Album_ID를 표시하고 싶습니다. 이 작업을 수행하는 방법을 알고있는 유일한 방법은 지난 주 모든 레코드를 선택하고 결과에서 "while"을 실행 한 다음 배열을 반복하고 해당 Album_ID 키를 +1 할 때마다 해당 Album_ID 키를 찾습니다. 동일한 Album_ID의 인스턴스. 이것은 매우 비효율적이며 SQL 쿼리를 통해이를 수행 할 수있는 좋은 방법이 있다는 것을 확신합니다. 그러나 이것은 내 지식 수준을 뛰어 넘습니다.특정 필드를 포함하는 레코드 수의 순서로 레코드 선택

질문에 따르면, 쿼리를 통해 각 앨범 수의 수를 얻은 다음 그 수로 정렬 할 수 있습니까?

다음은 원본 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

바하마, 당신은 육초 : –

+0

완벽한하여 저를 이길! 만약 내가 2 정답을 줄 수 있다면! +1해야 할 것 같아요! – Cyprus106

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

...

관련 문제