Подтвердить что ты не робот

Что означает знак (+) в предложении Oracle SQL WHERE?

Возможный дубликат:
Oracle: Что делает (+) в предложении WHERE?

Рассмотрим упрощенный SQL-запрос ниже в среде базы данных Oracle (хотя я не уверен, что это зависит от Oracle):

SELECT 
   t0.foo, t1.bar
FROM
   FIRST_TABLE t0, SECOND_TABLE t1
WHERE
   t0.ID (+) = t1.ID;

Что такое обозначение (+) для предложения WHERE? Прошу прощения, если это неосведомленный вопрос о новичках, но его было чрезвычайно сложно найти в Google или StackOverflow... потому что даже при использовании кавычек поисковые системы видят знак "+" и, похоже, хотят рассматривать его как что-то вроде логической директивы.

4b9b3361

Ответ 1

Это ориентированная на Oracle нотация для внешнего соединения. Это означает, что он будет включать все строки из t1 и использовать NULLS в столбцах t0, если в t0 нет соответствующей строки.

В стандартном SQL можно было бы написать:

SELECT t0.foo, t1.bar
  FROM FIRST_TABLE t0
 RIGHT OUTER JOIN SECOND_TABLE t1;

Oracle рекомендует больше не использовать эти объединения, если ваша версия поддерживает соединения ANSI (LEFT/RIGHT JOIN):

Oracle рекомендует использовать синтаксис FROM вместо OUTER JOIN вместо оператора объединения Oracle. Запросы внешнего соединения, использующие оператор объединения Oracle (+), подчиняются следующим правилам и ограничениям [...]