Oracle'da, (+) JOIN içindeki "isteğe bağlı" tabloyu belirtir. Yani sorgunuzda,
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id(+)
'b' tablosunun 'a' tablosuna SOL DIŞ BİR birleşimidir. Diğer tarafta (isteğe bağlı 'b' tablosu) veri yoksa, 'a' tablosunun tüm verilerini verilerini kaybetmeden döndürür.
Aynı sorgu için modern standart sözdizimi
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b ON a.id=b.id
veya kısayoluyla a.id=b.id
(tüm veritabanları tarafından desteklenmez):
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b USING(id)
(+) Öğesini kaldırırsanız normal iç birleşim sorgusu olur
Hem Oracle hem de diğer veritabanlarında daha eski sözdizimi:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id
Daha modern sözdizimi:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
INNER JOIN b ON a.id=b.id
Ya da sadece:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
JOIN b ON a.id=b.id
Yalnızca 'a' & 'b' tabloları 'id' değerinin aynı olduğu tüm verileri döndürür, ortak kısım anlamına gelir.
Sorgunuzu bir Doğru Katılma yapmak istiyorsanız
Bu, SOL BİRLEŞME ile aynıdır, ancak hangi tablonun isteğe bağlı olduğunu değiştirir.
Eski Oracle sözdizimi:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id(+)=b.id
Modern standart sözdizimi:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
RIGHT JOIN b ON a.id=b.id
Ref ve yardım:
https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:6585774577187
Oracle 11g'de + işaretini kullanarak Sol Dış Katılma
https://www.w3schools.com/sql/sql_join_left.asp