2014-06-09 264 views
-1

我試圖做出具有這種結構的一個Oracle SQL查詢的意義:左外連接三個表?

select * from A, B, C 
where 
A.Col1 = B.Col1(+) and 
C.Col1= A.Col1 (+) 

我不習慣棄用(+)語法,所以我會apreciate如果有人能夠提供的一個ANSI翻譯查詢。或用文字解釋。

編輯:

Polppan's答案可能是正確的。我不確定(也不是他似乎),因爲我無法驗證它,但仍然不完全理解(+)語法。

下面的查詢似乎是等同於Polppan's回答,對我來說,由於更容易將其映射到第一個查詢其接縫保持的順序:

SELECT * 
    FROM A 
    LEFT JOIN B ON A.Col1 = B.Col1 
    RIGHT JOIN C ON C.Col1 = A.Col1 

如果別人可以提供一個答案,提供一個ANSI翻譯和解釋,我會很高興地標誌着答案避免了當前的不確定性。

回答

4

您可以使用以下ANSI查詢,根據您的意願更改選擇列。

SELECT * 
    FROM C 
     LEFT OUTER JOIN A 
      ON C.Col1 = A.Col2 
     LEFT OUTER JOIN B 
      ON A.Col1 = B.Col1 

This文章解釋sql joins雄辯。