2013-07-02 24 views
0

我有以下SQL查詢搜索至少1次命中,MySQL和加入

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

,但它不工作:/

回答

0

你可以嘗試添加這樣的事情選定字段

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

那麼容易,但它的工程!非常感謝你:) – axeco

+0

對不起,我再次問,但是可以從專輯中選擇只有最高評價的歌曲嗎? – axeco