0

我有 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

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

4

2 回答 2

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

应该...

SUM(if(v.owner is NULL,0,1) as assigned
于 2012-05-04T15:27:36.797 回答
-2

对于这个问题,Left-Join 是错误的方法。解决方案是像这样使用子选择:

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
于 2012-05-04T14:45:53.827 回答