TableA LEFT OUTER JOIN TableB
е еквивалентен на TableB RIGHT OUTER JOIN Table A
.
В Oracle, (+)
обозначава "незадължителната" таблица в JOIN. Така че в първата ви заявка това е P LEFT OUTER JOIN S
. Във втората ви заявка това е S RIGHT OUTER JOIN P
. Те са функционално еквивалентни.
В терминологията RIGHT или LEFT указват коя страна на съединението винаги има запис, а другата страна може да е нула. Така че в P LEFT OUTER JOIN S
, P
винаги ще има запис, защото е от LEFT
, но S
може да е нула.
Вижте този пример от java2s.com за допълнително обяснение.
За да изясня, предполагам, че казвам, че терминологията няма значение, тъй като е там само за да ви помогне да визуализирате. Важното е да разбирате концепцията за това как работи.
ДЯСНО срещу ЛЯВО
Виждал съм известно объркване относно това какво има значение при определянето на RIGHT срещу LEFT в имплицитния синтаксис на свързване.
ЛЯВО ВЪНШНО СЪЕДИНЕНИЕ
SELECT *
FROM A, B
WHERE A.column = B.column(+)
ДЯСНО ВЪНШНО СЪЕДИНЕНИЕ
SELECT *
FROM A, B
WHERE B.column(+) = A.column
Всичко, което направих, е да разменя страните на термините в клаузата WHERE, но те все още са функционално еквивалентни. (Вижте по-горе в моя отговор за повече информация относно това.) Разположението на (+)
определя ДЯСНО или ЛЯВО. (По-конкретно, ако (+)
е отдясно, това е ЛЯВО СЪЕДИНЕНИЕ. Ако (+)
е отляво, това е ДЯСНО СЪЕДИНЕНИЕ.)
Видове JOIN
Двата стила на JOIN са имплицитни JOINs и явни JOINs . Това са различни стилове на писане на JOIN, но са функционално еквивалентни.
Вижте този SO въпрос .
Неявни JOINs просто избройте всички таблици заедно. Условията за присъединяване са посочени в клауза WHERE.
Неявно ПРИСЪЕДИНЯВАНЕ
SELECT *
FROM A, B
WHERE A.column = B.column(+)
Изрични присъединявания асоциирайте условията за присъединяване с включване на конкретна таблица вместо в клауза WHERE.
Изрично ПРИСЪЕДИНЯВАНЕ
SELECT *
FROM A
LEFT OUTER JOIN B ON A.column = B.column
Тези имплицитни JOINs могат да бъдат по-трудни за четене и разбиране и те също имат няколко ограничения, тъй като условията за присъединяване се смесват в други условия WHERE. Като такива, имплицитните JOIN обикновено не се препоръчват в полза на изричния синтаксис.