Старый Стиль Oracle Outer Join синтаксис-зачем искать ( + ) на правой стороне знака равенства в левом внешнем соединении?

Я всегда говорю новым людям, что простой способ запомнить старый синтаксис Oracle outer-join-это

знак ( + ) находится на противоположной стороне от того, где вы думаете, что он должен быть.

ушли:

select * from foo, bar
where foo.id = bar.id(+)

право на вступление:

select * from foo, bar
where foo.id(+) = bar.id

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

1 ответов


на (+) определяет таблицу, к которой присоединяется внешняя. Так, как меня учили,(+) указал таблицу, в которой будут отсутствовать строки, для которых new NULL строки должны быть добавлены.

если вы посмотрите на альтернативные левые внешние синтаксисы соединения, что различные базы данных поддерживается до LEFT OUTER JOIN стал частью стандарта ANSI, проприетарный оператор обычно применялся к таблице, которая была "отсутствующей" строками. DB2 также поддерживает (+) оператор для внешних соединений так же, как и Oracle.