2012-04-12 65 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