0

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

例子:

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

A 3
B 2
C 0, 

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

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

4

3 回答 3

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这里做。

于 2015-04-28T14:58:40.573 回答
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

于 2015-04-28T14:46:49.030 回答
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
于 2015-04-28T14:52:01.300 回答