这应该是一个非常简单的解决方案,这意味着您可能会认为这是一个愚蠢的问题,但我已经尝试了我能想到的一切。
我有两张表,一张用于可能的民意调查选择,另一张用于实际响应。它们的结构如下:
choices responses
----------- ----------
poll_id poll_id
choice_id user_id
choice_text choice_id
我有一个有两个选择(是/否)的民意调查,所以我试图获取结果,以便如果没有人投票支持某个选择,该选择会在结果集中显示一个null
值。因此,如果 3 个用户投了“是”而没有人投了“否”,我希望结果集是:
choice_text num
-----------------------------
yes 3
no null
我会认为这只是一个像这样的外部连接:
select
c.choice_text,
count(*) num
from
choices c
left outer join responses r
on c.poll_id = r.poll_id
and c.choice_id = r.choice_id
where
r.poll_id = 1
group by r.choice_id
order by r.choice_id asc;
但唉,这给了我:
choice_text num
-----------------------------
yes 3
...没有任何“不”的记录。
我已经尝试了所有我能想到的连接语言,但结果都是错误的。
想法?