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

ользую 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, так как это столбец в таблицеemployees а такжеdepartments, Факт в Oracle 10g, это не так, и результат показывает, что он интерпретируетdepartment_id как один вdepartments, Однако, если я закомментирую второй оператор соединения (4-я строка выше), Oracle будет жаловаться «ORA-00918: столбец определен неоднозначно», как и ожидалось.

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

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос