Какой тип объединения: «.... где A.ID = B.ID (+)» - PullRequest
9 голосов
/ 30 ноября 2011

Я сталкивался с таким кодом, который мне нужно переписать с использованием стандарта ANSI, и я хочу убедиться, что соединения сохраняются правильно.Кроме того, что это за соглашение?

Каков синтаксис для других типов объединений, использующих это соглашение?

При использовании этого соглашения (+) всегда будет справа от выражения?

Где я могу узнать больше об этом?

Ответы [ 2 ]

9 голосов
/ 30 ноября 2011

В синтаксисе Oracle это означает LEFT OUTER JOIN, правая сторона является необязательной (допускает значение NULL).Если бы + было слева от A.ID, это было бы RIGHT OUTER JOIN.Этот синтаксис (я считаю) устарел в ISO SQL 99, но остается в Oracle.

Это эквивалент этого предпочтительного синтаксиса:

SELECT
 A.ID,
 B.somecol
FROM A LEFT OUTER JOIN B ON A.ID = B.ID
4 голосов
/ 30 ноября 2011

Это выглядит как базовое левое внешнее объединение с использованием альтернативного синтаксиса.Вот страница Joins в Википедии, где вы можете ее увидеть.

По сути, это способ выполнения условного объединения, а (+) представляется альтернативным синтаксисом.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...