显示即使计数为零时从另一个表的一列计数

问题描述:

我有两个表A和B。在表A中(的Oracle SQL),一个唯一的列(未主键)代码可以具有在表B.一些记录显示即使计数为零时从另一个表的一列计数

实施例:

代码 “A” 有3项,编码“B “有2项与代码‘C’具有表B. 0项我想查询显示代码及其表B.

A 3 
B 2 
C 0, 

的记录计数,但我没有得到与零个记录代码在表B中,即C 0.

请任何人都可以帮助我的查询。

+1

对GROUP BY执行LEFT JOIN并计数。 – jarlh

+0

我试过了..但是没有正确地得到它..你要告诉我上述场景的确切查询 – user3615185

+2

向我们展示示例表数据,你的查询(不能正常工作的)和预期结果! – jarlh

GROUP BYLEFT JOIN解决方案:

select a.code, 
     a.name, 
     count(*) 
from A a 
    LEFT JOIN B b ON a.code = b.code 
group by a.code, a.name 

相关子查询的解决方案:

select a.code, 
     a.name, 
     (select count(*) from B b where a.code = b.code) 
from A a 

也许你需要做SELECT DISTINCT这里。

+0

谢谢所有..它适用于我.. :-) – user3615185

你正在做一些不正确的事情。这个工作对我来说:

select A.code, Count(B.code) from A 
left join B on A.code = b.code 
group by A.code 

小提琴:http://sqlfiddle.com/#!4/f13e1/2

+0

这是完美的解决方案 –

这是很容易,你只需要采取列基础上,你要指望像我一样“A.code”,不要忘了按该列分组,并使用COUNT()。 检查下面的解决方案

select A.code, Count(B.code) AS Count 
    from A 
    left join B on A.code = b.code 
    group by A.code