显示即使计数为零,也从另一个表中计算一列

时间:2015-04-28 14:17:08

标签: sql oracle left-join nvl

我有两张桌子 A和B 。在表A(Oracle sql)中,唯一列(非主键)代码可能在表B中有一些记录。

示例:

代码“A”有3个条目,代码“B”有2个条目,代码“C”在表B中有0个条目。我希望查询显示表B中的代码及其记录数。

A 3
B 2
C 0, 

但我没有在表B中获得零记录的代码,即C 0。

请有人帮我查询。

3 个答案:

答案 0 :(得分:1)

你做错了什么。这对我有用:

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

答案 1 :(得分:1)

带有GROUP BY解决方案的

LEFT 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

答案 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