Почему Oracle 10g не жалуется на неоднозначность столбцов?

Я использую Oracle 10g (XE 10.2.0.1.0), и обнаружил поведение, которое я не понимаю:

select * 
from employees manager
    join employees worker on MANAGER.EMPLOYEE_ID = WORKER.MANAGER_ID
    join departments on DEPARTMENTS.manager_id = 108
where
    department_id = 100
;

Проблема в том, что я думаю, Oracle должен был жаловаться на двусмысленность Department_id в предложении where, поскольку это столбец в обеих таблицах сотрудники и отделов . Факт есть в Oracle 10g, это не так, и результат показывает, что он интерпретирует идентификатор_отдела как идентификатор отделов . Однако, если я закомментирую второй оператор соединения (4-я строка выше), Oracle, как и ожидалось, пожалуется «ORA-00918: столбец определен неоднозначно»

Итак, может ли кто-нибудь помочь объяснить, как неоднозначность определяется в Oracle 10g? Или, может быть, это ошибка в 10g?

BTW: таблицы определены в схеме HR по умолчанию, включенной в Oracle 10g.

Обновление: только что нашел связанный пост: Почему Oracle SQL таинственным образом разрешает неоднозначность в одном соединении и не разрешает в других

10
задан Community 23 May 2017 в 11:51
поделиться