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

具有0个已分配记录的用户的mySQL加入查询,mysql,Mysql,我有两个表,投票者和用户。我想在所有用户的用户信息旁边显示分配的投票人记录总数 此时,这种查询起作用了——它显示分配了任意数量记录的用户的总数,但不显示在投票表中分配了0条记录的用户 投票者记录分配给具有字段Voter.owner的用户。以下是我目前拥有的: 选择u.id ,u.admin ,美国现役 ,美国名称 ,美国电邮 ,美国 ,如果countv.owner为空,“0”,则将v.owner计数为已分配 来自用户u 左联投票者v 在u.id=v.owner上 其中u.cid=“$cid” 美

我有两个表,投票者和用户。我想在所有用户的用户信息旁边显示分配的投票人记录总数

此时,这种查询起作用了——它显示分配了任意数量记录的用户的总数,但不显示在投票表中分配了0条记录的用户

投票者记录分配给具有字段Voter.owner的用户。以下是我目前拥有的:

选择u.id ,u.admin ,美国现役 ,美国名称 ,美国电邮 ,美国 ,如果countv.owner为空,“0”,则将v.owner计数为已分配 来自用户u 左联投票者v 在u.id=v.owner上 其中u.cid=“$cid” 美国身份证asc订购
关于如何显示所有用户,即使是不拥有和投票人记录的用户,有什么建议吗?

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

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
应该是

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

您应该像USER一样小心使用MySQL保留字作为表名,或者正确地转义它们。我们可以从两个表中看到一些示例数据吗?对我来说,这看起来像是一个适当的左连接,即使在投票者中没有匹配的情况下,也可以保持用户的行。您可以尝试将结果分组谢谢!这非常有效-现在我意识到子查询是解决这个问题的方法。这里的左连接没有问题。OtohMySQL不能很好地处理子查询中的推送谓词。
SUM(if(v.owner is NULL,0,1) as assigned