Я не понимаю, почему работает следующий запрос, хотя подзапрос выдает ошибку «неверный идентификатор».
SELECT *
FROM aircraft
WHERE airc_manufact IN (SELECT airc_manufact FROM flight);
Мои таблицы выглядят следующим образом (сокращенно):
САМОЛЕТ ( airc_model (PK) , airc_manufact)
ПОЛЕТ ( flt_no (PK) , airc_model (FK) )
Если я запускаю подзапрос самостоятельно, то я получаю ошибку «неверный идентификатор», как и должно быть, поскольку airc_manufacture не является столбцом в таблице полетов.
Если я выполню весь запрос, я не получу сообщение об ошибке. Oracle, похоже, игнорирует подзапрос и, таким образом, выдает мне все строки в таблице самолетов.
Мне кажется, это ошибка, потому что в запросе есть очевидная ошибка. Почему выполняется запрос? Насколько я понимаю, Oracle сначала запустит или оценит подзапрос, а затем выполнит внешний запрос.