0

チャートリストを作成しようとしていて、次のクエリを使用しています

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))

持っている節では、しかしそれはうまくいきませんでした

私はphpとmysqlを使用しています

助けてくれてありがとう

編集 3: mysql フィドル http://sqlfiddle.com/#!2/677cf/1/0

最初の 3 行だけが必要です (アルバムで最も評価の高い曲)

4

1 に答える 1