W Oracle (+) oznacza „opcjonalną” tabelę w JOIN. W swoim zapytaniu
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id(+)
jest to LEWE POŁĄCZENIE ZEWNĘTRZNE tabeli „b” do tabeli „a”. Zwróci wszystkie dane z tabeli „a” bez utraty danych, jeśli po drugiej stronie (opcjonalna tabela „b”) nie ma żadnych danych.
Nowoczesna standardowa składnia dla tego samego zapytania byłaby
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b ON a.id=b.id
lub ze skrótem dla a.id=b.id
(nie obsługiwane przez wszystkie bazy danych):
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b USING(id)
Jeśli usuniesz (+), będzie to normalne zapytanie sprzężenia wewnętrznego
Starsza składnia, zarówno w Oracle, jak i innych bazach danych:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id
Bardziej nowoczesna składnia:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
INNER JOIN b ON a.id=b.id
Lub po prostu:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
JOIN b ON a.id=b.id
Zwróci tylko wszystkie dane, w których wartość identyfikatora obu tabel „a” i „b” jest taka sama, czyli część wspólna.
Jeśli chcesz, aby twoje zapytanie było prawidłowe
To jest to samo, co LEFT JOIN, ale przełącza, która tabela jest opcjonalna.
Stara składnia Oracle:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id(+)=b.id
Nowoczesna standardowa składnia:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
RIGHT JOIN b ON a.id=b.id
Odwołanie i pomoc:
https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:6585774577187
Left Outer Join za pomocą + Zaloguj się w Oracle 11g
https://www.w3schools.com/sql/sql_join_left.asp