搜索至少1个命中,mysql和加入

时间:2013-07-02 21:58:37

标签: mysql join count

我有以下sql查询

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

这很好但现在我必须知道用户是否已经投票选出了一首歌,这就是我的问题

评级表看起来像这样

ID | songid |用户ID |评价

我试过这样的事情

SELECT 
...
 COUNT(vmm_songrating.id) as hasvoted  
...
OUTER JOIN 
    vmm_songrating
ON 
    vmm_songrating.userid = $id
...

$ id是用户会话ID

但它不起作用:/

1 个答案:

答案 0 :(得分:0)

你可以尝试在选定的字段中添加这样的内容

SUM(case when vmm_songrating.userid = $id then 1 end) as hasvoted