Пример из моего учебного руководства по экзамену Oracle SQL Certified Expert меня озадачил.
Оператор SQL:
INSERT
WHEN (BOSS_SALARY-EMPLOYEE_SALARY < 10000) THEN
INTO SALARY_CHART (EMP_TITLE, SUPERIOR, EMP_INCOME, SUP_INCOME)
VALUES (EMPLOYEE, BOSS, EMPLOYEE_SALARY, BOSS_SALARY)
SELECT A.POSITION EMPLOYEE
, B.POSITION BOSS
, A.MAX_SALARY EMPLOYEE_SALARY
, B.MAX_SALARY BOSS_SALARY
FROM POSITIONS A
JOIN POSITIONS B ON A.REPORTS_TO_POSITION_ID = B.POSITION_ID
Объяснение из книги:
Обратите внимание, что эта версия сделала больше
чем требуется, и применяет столбец
псевдонимы для каждого столбца в
подзапрос, а затем ссылается на эти столбцы
псевдонимы WHEN и VALUES
статьи. Нам нужен только столбец
псевдонимы A.POSITION и B.POSITION
в строках 5 и 6, поэтому мы можем ссылаться на псевдонимы столбцов в строке 4.
Мой источник путаницы:
Разве нам не нужны псевдонимы для двух столбцов MAX_SALARY, выбранных в строках 7 и 8, чтобы различать их в строке 4? Похоже, что объяснение предполагает, что псевдонимы EMPLOYEE_SALARY и BOSS_SALARY являются посторонними ...
Может кто-нибудь объяснить это?