【发布时间】:2013-06-15 22:57:57
【问题描述】:
我正在尝试制作图表列表,我使用以下查询
SELECT
vmm_user.username,
vmm_songs.*,
vmm_albums.desc,
vmm_albums.release,
vmm_albums.name,
AVG(vmm_songrating.rating) AS ratingavg,
COUNT(vmm_songrating.id) AS ratingcount
FROM
vmm_songs
LEFT JOIN
vmm_user
ON
vmm_songs.userid=vmm_user.id
LEFT JOIN
vmm_albums
ON
vmm_songs.albumid=vmm_albums.id
LEFT JOIN
vmm_songrating
ON
vmm_songs.id=vmm_songrating.songid
GROUP BY
vmm_songs.id
HAVING
COUNT(vmm_songrating.id) >= 2
ORDER BY
AVG(vmm_songrating.rating) DESC
LIMIT
10
如您所见,我得到的每个条目至少有 2 个评分,但我只想显示每张专辑平均评分最高和最低 2 个评分的歌曲
我尝试添加类似
的内容MAX(AVG(vmm_songrating.rating))
在having子句中,但没有用
我使用php和mysql
感谢您的帮助
编辑 3: mysql小提琴 http://sqlfiddle.com/#!2/677cf/1/0
只想要前 3 行(专辑中评分最高的歌曲)
【问题讨论】:
-
澄清一下,您是按歌曲评分,但您想要评分最高的专辑?
-
哦不,我想要专辑中评分最高的歌曲,图表显示评分最高但最高的歌曲。每张专辑 1 首歌曲
-
因此您想显示多张专辑,但只显示每张专辑中最好的歌曲。这很棘手。我需要想想我以前是怎么做到的。我确定它涉及子查询。
-
对,我不擅长 mysql 自己解决这个问题:/慢慢来 :)
-
你能提供样本数据和想要的输出吗?