首页 > 解决方案 > Right Join 无法返回第二个表中的所有行

问题描述

我的代码不会返回在选票表中没有投票的所有候选人。它应该返回所有投票或没有投票的候选人的详细信息。但是,如果我 COUNT(choice) as votes 从查询中删除,它会完美运行。如何添加 COUNT(choice) as votes并仍然获取没有投票和投票的人的详细信息?

SELECT  candidates.name as cname,COUNT(choice) as votes 
FROM ballots
RIGHT JOIN candidates 
ON candidates.id = ballots.candidate_id 
WHERE candidates.position_id ='1' 
GROUP BY ballots.candidate_id  
ORDER BY votes DESC

候选人表

ID 姓名 Position_id
1 所罗门 1
2 阿代 1

选票表

voter_id position_id 候选人ID 选择

结果

voter_id 选票
所罗门 0

代替:

结果

voter_id 选票
所罗门 0
阿代 0

标签: mysql

解决方案


使用此查询,您将获得预期的结果:

select candidate.name as voter_id, (select count(ballots.choice) from ballots WHERE ballots.candidate_id=candidate.id) as votes FROM candidate left JOIN ballots ON candidate.id = ballots.candidate_id WHERE candidate.position_id=1

推荐阅读