У меня следующий запрос:
select * from
(select rownum rnum, p.* from
(select DEPARTMENTS.DEPARTMENT_ID,
DEPARTMENTS.DEPARTMENT_NAME,
DEPARTMENTS.MANAGER_ID,
EMPLOYEES.EMPLOYEE_ID,
EMPLOYEES.FIRST_NAME,
EMPLOYEES.LAST_NAME,
EMPLOYEES.MANAGER_ID,
EMPLOYEES.DEPARTMENT_ID,
EMPLOYEES.DETAILS
from HR.EMPLOYEES
INNER JOIN HR.DEPARTMENTS on
HR.DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID
where EMPLOYEES.EMPLOYEE_ID >= 1) p
where rownum <= 4)
where rnum >= 2
, которая дает мне следующую ошибку:
Ошибка SQL: ORA-00918: столбец определен неоднозначно
00918. 00000 - «столбец с неоднозначным определением»
Если поля имеют разные имена, ошибок нет. Например, этот запрос корректен:
select * from
(select rownum rnum, p.* from
(select DEPARTMENTS.DEPARTMENT_ID,
DEPARTMENTS.DEPARTMENT_NAME,
DEPARTMENTS.MANAGER_ID,
EMPLOYEES.EMPLOYEE_ID,
EMPLOYEES.FIRST_NAME,
EMPLOYEES.LAST_NAME,
EMPLOYEES.DETAILS
from HR.EMPLOYEES
INNER JOIN HR.DEPARTMENTS on
HR.DEPARTMENTS.DEPARTMENT_ID=EMPLOYEES.DEPARTMENT_ID
where EMPLOYEES.EMPLOYEE_ID >= 1) p
where rownum <= 4)
where rnum >= 2
Каков правильный синтаксис для внутреннего объединения с нумерацией страниц и полей из разных таблиц с одинаковыми именами? Как я могу избежать ошибки ORA-00918 в моем первом запросе?
Я использую Oracle 11g.