1

それぞれに一意のIDと公開日を持つ曲のテーブルがあります

id | name | pub_date

また、ビデオ ID、いいねを作成したユーザー ID、およびビデオ ID をアップロードしたユーザーを持ついいねを含むテーブル:

song_id | user_id | songuser_id

作成する必要があるクエリは、当月にアップロードされた、最も高く評価された 10 個のビデオを検索することです。これが私がこれまでに持っているものです:

SELECT songs.id, songs.name, songs.pub_date, COUNT(likes.song_id) as likecount 
FROM `songs` INNER JOIN `likes` on songs.id = likes.song_id
WHERE MONTH(CAST(songs.pub_date as date)) = MONTH(NOW()) 
AND YEAR(CAST(songs.pub_date as date)) = YEAR(NOW()) 
ORDER BY likecount DESC LIMIT 5

しかし、私は1つの結果しか返していないようです。私が抱えている問題は、いいねのグループ化に関係していると思いますが、わかりません。どんな助けでも大歓迎です。

ありがとう、ジェームズ。

4

2 に答える 2

1

GROUP BYの列を集計したため、句が必要です。SELECT

SELECT..
FROM...JOIN...
WHERE...
GROUP BY songs.id, songs.name, songs.pub_date
ORDER BY...
LIMIT...
于 2013-09-14T12:11:27.483 に答える
0

DISTINCT/GROUP を使ってみましたか?

SELECT 
   songs.id, songs.name, songs.pub_date, COUNT(likes.song_id) as likecount
FROM
   songs
INNER JOIN likes ON likes.song_id = songs.id
WHERE
   MONTH(CAST(songs.pub_date as date)) = MONTH(NOW()) 
   AND 
   YEAR(CAST(songs.pub_date as date)) = YEAR(NOW()) 
GROUP BY
   songs.id  
ORDER BY
   likecount DESC 
LIMIT 5
于 2013-09-14T12:24:10.477 に答える