具有0个已分配记录的用户的mySQL JOIN查询

时间:2012-05-04 14:27:09

标签: mysql

我有2张桌子,选民和用户。我想向所有用户显示其用户信息旁边所分配的选民记录总数。

此时,此查询类型有效 - 它显示分配了任意数量记录的用户的总数,但它不显示在选民表中分配了0条记录的用户。

使用字段voter.owner将选民记录分配给用户。这就是我目前所拥有的:

SELECT u.id
    ,u.admin
    ,u.active
    ,u.name
    ,u.email
    ,u.last
    ,if(count(v.owner) is NULL,'0',count( v.owner )) as assigned 
from user u 
left join voter v 
    on u.id = v.owner 
where u.cid = '$cid' 
order by u.id asc

有关如何显示所有用户的建议,甚至是那些不拥有和选民记录的用户?

2 个答案:

答案 0 :(得分:1)

if(count(v.owner) is NULL,'0',count( v.owner )) as assigned

应该是......

SUM(if(v.owner is NULL,0,1) as assigned

答案 1 :(得分:-2)

对于此问题,左连接是错误的方法。 解决方案是使用如下的子选择:

SELECT `user.id`, `user.admin`, `user.active`, `user.name`, `user.email`, `user.last`,
    (SELECT COUNT(*) FROM voter WHERE `user.id` = voter.owner)
FROM `user` 
WHERE user.cid = '$cid'
ORDER BY `user.id` ASC