Выбор записей в порядке количества записей, содержащих определенное поле - PullRequest
0 голосов
/ 29 сентября 2011

У нас есть таблица, которая организована так: ID, Album_ID и Time_Voted. Каждый раз, когда пользователь голосует, это создает новую запись. Мы хотели бы отобразить пять лучших идентификаторов Album_ID (в которых было наибольшее количество записей, содержащих этот идентификатор Album_ID в конце каждой недели). Единственный способ, которым я знаю, как это сделать, - ВЫБРАТЬ все записи за прошедшую неделю, затем выполнить «время» для результатов, затем перебрать массив и добавить +1 к соответствующему ключу Album_ID каждый раз, когда он находит экземпляр того же Album_ID. Это довольно неэффективно, и я убежден, что есть хороший способ сделать это с помощью SQL-запроса, но это за пределами моего уровня знаний.

Итак, вопрос в том, есть ли способ, посредством запроса, получить счетчик каждого числа идентификаторов album_ID, а затем упорядочить по этому количеству?

Вот исходный оператор SQL, с которым я работал. ГОДОВОЙ материал был только на прошлой неделе.

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

Ответы [ 2 ]

6 голосов
/ 29 сентября 2011
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
1 голос
/ 29 сентября 2011
select album_id, count( album_id ) 
from wp_album_votes
group by album_id
order by 2 desc.

Вы можете обернуть другой текст и даты в эту базовую структуру ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...