2016-10-13 56 views
0

我有一個查詢,看起來像這樣:甲骨文外部聯接語法

select * 
from find fsc, 
     let lf, 
     cust cus, 
     STRIKE ist 
WHERE fsc.id = lf.id 
AND  ist.ID_old = fsc.ID_old 
AND  lf.cust_id = cus.cust_id(+) 

我知道(+)是舊語法的加入,但我不知道它是什麼實際上做這個查詢。有人可以解釋這一點,並使用更現代的連接語法在where語句中顯示沒有(+)的查詢嗎?

+0

'(+)'是'OUTER JOIN'或'LEFT JOIN'的舊語法。保留主表中的所有記錄(沒有加號的那個)和詳細表中的所有匹配記錄(帶有加號的記錄) – sagi

+0

謝謝!幫了很多 – SJR59

回答

1

我相信你想這樣的:

select * 
from find fsc join 
    let lf 
    on fsc.id = lf.id join 
    STRIKE ist 
    on ist.ID_old = fsc.ID_old left join 
    cust cus 
    on lf.cust_id = cus.cust_id; 

說實話,外聯接可能是沒有必要的。爲什麼lfcust_id無效?唯一合理的可能性是價值是NULL

+0

謝謝!幫了很多 – SJR59