2014-01-15 200 views
1

我有2個SQL Oracle數據表。如何連接兩個表

A: Col1 | Col2 | Key 
    c1  c2 1 
    c3  c4 2 
    c5  c6 3 


B: Co1 | Co2 | Key 
     a1  a2 2 
     a3  a4 3 

我需要選擇讓我下表:

C: 
    a1 a2 c3 c4 
    a3 a4 c5 c6 
    - - c1 c2 

我怎樣才能用SQL做呢?正常加入:

select * from a, b where a.key = b.key; 

沒有給出預期的結果。

回答

4

你需要一個左外連接:

select b.col1, b.col2, a.col1, a.col2 
from a left outer join 
    b 
    on a.key = b.key; 
+0

謝謝!我會測試它,然後接受。 – Tony

+1

完美的作品。 http://sqlfiddle.com/#!4/2aa79/4/0當你想從左側的對象中獲得所有的東西時,使用'left outer join'即使沒有任何與右側對象相關的東西(左邊的外連接) –

2

在做一個連接你好像只會返回存在於兩個表中的條目。爲了得到你正在尋找嘗試這樣的結果......

SELECT B.Co1, B.Co2, A.Col1, A.Col2 
FROM A 
LEFT JOIN B ON A.Key = B.Key 
+0

from子句中的表的順序不正確。請檢查接受的答案。 – Tony

2

嘗試此查詢:

SELECT B.Co1, B.Co2, A.Col1, A.Col2 
FROM A,B 
WHERE A.Key = B.Key(+); 
0

你好你可以試試這個:

SELECT b.Col1, b.Col2, a.Co1, a.Co2 FROM s 
LEFT JOIN a ON a.Key = b.Key 

JOIN (INNER JOIN)

INNER JOIN關鍵字選擇兩個表中的所有行,只要列。如果「A」表中的行中沒有「B」中的匹配項,則不會列出這些行。

LEFT JOIN

左JOIN關鍵字返回所有左表中的(A)的行,即使是在正確的表(B)中沒有匹配。

+0

from-clause中的表的順序不正確。請檢查接受的答案。 – Tony