2015-04-28 74 views
0

我有兩個表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

回答

1

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

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

+0

這是完美的解決方案 –

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 
相關問題