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 для дополнительного объяснения.
Чтобы пояснить, я полагаю, я говорю, что терминология не имеет значения, поскольку она существует только для визуализации.Важно то, что вы понимаете концепцию его работы.
ПРАВО против ЛЕВЫХ
Я видел некоторую путаницу в том, что важно при определении ПРАВО против ЛЕВЫХ в неявном синтаксисе соединения.
LEFT OUTER JOIN
SELECT *
FROM A, B
WHERE A.column = B.column(+)
RIGHT OUTER JOIN
SELECT *
FROM A, B
WHERE B.column(+) = A.column
Все, что я сделал, это поменялся сторонами терминов в предложении WHERE, но они все еще функциональныэквивалент.(См. Выше в моем ответе для получения дополнительной информации об этом.) Размещение (+)
определяет ПРАВО или ВЛЕВО.(В частности, если (+)
справа, это ЛЕВОЕ СОЕДИНЕНИЕ. Если (+)
слева, то это ПРАВОЕ СОЕДИНЕНИЕ.)
Типы JOIN
Два стиля JOIN - это неявные JOINы и явные JOINs .Это разные стили написания JOIN, но они функционально эквивалентны.
См. этот вопрос SO .
Неявные JOIN просто перечисляют все таблицы вместе,Условия соединения указаны в предложении WHERE.
Неявное JOIN
SELECT *
FROM A, B
WHERE A.column = B.column(+)
Явные соединения вместо этого связывают условия соединения с включением определенной таблицыв предложении WHERE.
Явное соединение
SELECT *
FROM A
LEFT OUTER JOIN B ON A.column = B.column
Эти неявные соединения могут быть более сложными для чтения и понимания, и они также имеют несколько ограничений, так какусловия соединения смешиваются в других условиях WHERE.Таким образом, неявные соединения обычно рекомендуются в пользу явного синтаксиса.