2012-04-12 77 views
0

我有2個表「瀏覽器」和「投票」。我需要所有的瀏覽器,只需要vote_ranking和user_id。有時沒有投票,但我仍然需要瀏覽器。 這是我寫的代碼:mysql加入和null

SELECT browsers.*, votes.* 
FROM browsers LEFT JOIN votes ON browsers.app_id = votes.app_id 
WHERE vote_ranking = '$ranking' AND user_id = $userid or vote_id IS NULL 

問題是,當沒有票(vote_id IS NULL)的APP_ID更改爲NULL。但我需要保持瀏覽器app_id,即使沒有app_id投票。

我可以加入表格投票只行'there是vote_id?或者類似的東西做我需要的東西?

感謝

回答

1

試試這個:

SELECT browsers.*, votes.vote_ranking, votes.user_id 
FROM browsers 
LEFT JOIN votes 
    ON browsers.app_id = votes.app_id 
    AND vote_ranking = '$ranking' 
    AND user_id = $userid 

這樣,從選票相應的記錄將被加入只有,如果有合適的vote_ranking。否則會有NULL s,但您仍然會保留browsers的數據。

+0

當沒有與匹配的app_id進行投票時,它不保留瀏覽器數據,瀏覽器行不顯示。 vote_ranking只在投票表中。唯一匹配的數據是app_id。 – Azzoth 2012-04-12 20:56:40

+0

您是否嘗試過我的查詢?我絕對認爲它應該適合你。 – 2012-04-12 20:58:22

+0

是的,我只是顯示瀏覽器的投票。問題出在你的WHERE它只顯示帶有user_id的行,但是當沒有投票時,沒有user_id,所以瀏覽器不顯示。 – Azzoth 2012-04-12 21:00:16