我有三个表(为了参数)个人,电子邮件和属性。 individual_Ref将个人链接到电子邮件和属性的外键。不明白为什么这两个查询给出不同的结果
对于给定的个人来说,没有必要在属性表上表示它们,因为它们可能永远不会添加属性,并且如果它们具有多个属性,则它们可以出现多次。
我想得到一个单独的引用列表和一个特定属性的计数。但需要通过电子邮件地址搜索,因为它允许个人共享电子邮件地址(不要让我开始)...
我的第一个尝试是
select e.individual_ref, count(a.attr_Code_ref)
from email e left join attribute a on e.individual_Ref = a.individual_ref
where e.email_Address = '[email protected]'
and a.attr_code_Ref = 4119
group by e.individual_ref
使用左连接,以确保我如果存在个人参考,并且确保在电子邮件中有个人参考但不属于属性的情况下获得结果,则可以获得个人参考。我这样想着,因为这不返回行,但...
select e.individual_ref,
(select count(a.attr_Code_ref) from attribute a where a.attr_code_Ref = 4119 and a.individual_ref = e.individual_ref)
from email e
where e.email_Address = '[email protected]'
group by e.individual_REf
返回一行与individual_Ref和0
我不建议SQL被破坏更是我的理解是一个数..所以我想“我的困惑是什么?”是个问题。
+1让人们考虑的效果与JOIN – 2010-02-09 14:06:23
的上下文中的WHERE子句感谢所有答案! – 2010-02-09 14:49:13