我有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
有关如何显示所有用户的建议,甚至是那些不拥有和选民记录的用户?
答案 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