Допустим, у меня есть такая таблица:
Основной стол:
id | value
-----------
1 | 'not null'
Столовый стол:
id | value
-----------
2 | 'id does not match, whatever'
И оператор выбора вроде этого:
SELECT
m.value without_join,
(SELECT
m.value with_join
FROM
joined_table j
WHERE
j.id(+) = m.id) joined
FROM
main_table m;
Возвращенный результат выглядит следующим образом:
without_join | with_join
-------------------------
not null | (null)
Внутреннее соединение выполняется вместо внешнего соединения, хотя я присоединился с оператором (+)
. Поскольку в подзапросе не выбрано ни одной строки, вместо m.value
возвращается нулевое значение.
Поведение, которое я ожидал, заключалось во внешнем соединении j
с m
в подзапросе и, следовательно, возвращении ненулевого значения из таблицы m
.