TableA LEFT OUTER JOIN TableB
jest równoważne TableB RIGHT OUTER JOIN Table A
.
W Oracle (+)
oznacza „opcjonalną” tabelę w JOIN. Więc w pierwszym zapytaniu jest to plik P LEFT OUTER JOIN S
. W drugim zapytaniu to S RIGHT OUTER JOIN P
. Są funkcjonalnie równoważne.
W terminologii PRAWO lub LEWO określ, która strona sprzężenia zawsze ma rekord, a druga strona może być zerowa. Więc w a P LEFT OUTER JOIN S
, P
zawsze będzie miał rekord, ponieważ jest na LEFT
, ale S
może być pusty.
Dodatkowe wyjaśnienia można znaleźć w przykładzie z witryny java2s.com .
Aby wyjaśnić, myślę, że mówię, że terminologia nie ma znaczenia, ponieważ służy tylko do wizualizacji. Liczy się to, że rozumiesz koncepcję tego, jak to działa.
PRAWO vs LEWO
Widziałem pewne zamieszanie dotyczące tego, co ma znaczenie przy określaniu PRAWEGO i LEWEGO w niejawnej składni sprzężenia.
LEWE POŁĄCZENIE ZEWNĘTRZNE
SELECT *
FROM A, B
WHERE A.column = B.column(+)
PRAWE POŁĄCZENIE ZEWNĘTRZNE
SELECT *
FROM A, B
WHERE B.column(+) = A.column
Wszystko, co zrobiłem, to zamienić strony terminów w klauzuli WHERE, ale nadal są one funkcjonalnie równoważne. (Zobacz wyżej w mojej odpowiedzi, aby uzyskać więcej informacji na ten temat.) Umiejscowienie (+)
określa PRAWO lub LEWO. (W szczególności, jeśli (+)
znajduje się po prawej stronie, jest to LEWE POŁĄCZENIE. Jeśli (+)
jest po lewej stronie, jest to PRAWE POŁĄCZENIE).
Rodzaje JOIN
Dwa style JOIN to niejawne JOIN i jawne JOIN . Są to różne style pisania JOIN, ale są one funkcjonalnie równoważne.
Zobacz to pytanie SO .
Niejawne JOIN po prostu wyświetlają wszystkie tabele razem. Warunki łączenia są określone w klauzuli WHERE.
Niejawne JOIN
SELECT *
FROM A, B
WHERE A.column = B.column(+)
Jawne JOIN kojarzą warunki łączenia z włączeniem konkretnej tabeli zamiast z klauzulą WHERE.
Wyraźne JOIN
SELECT *
FROM A
LEFT OUTER JOIN B ON A.column = B.column
Te niejawne JOIN mogą być trudniejsze do odczytania i zrozumienia, a także mają kilka ograniczeń, ponieważ warunki łączenia są mieszane w innych warunkach WHERE. W związku z tym niejawne JOIN są generalnie zalecane na rzecz jawnej składni.