У меня синтаксическая ошибка в запросе Oracle SQL. Запрос должен получить мне отдел сотрудника. Если у сотрудника нет отдела (ноль), я хочу, чтобы отдел первого менеджера поднялся по иерархии, в которой есть отдел.
SELECT department_id FROM department
WHERE department_id =
(
SELECT department_id FROM employee
WHERE department_id IS NOT NULL AND rownum = 1
start WITH employee_id = 19
connect by employee_id = prior manager_id
ORDER BY level
);
Сообщение об ошибке:
ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
*Cause:
*Action:
Error at Line: 8 Column: 2
Я написал альтернативный запрос, который делает работу. Но я не очень доволен этим.
SELECT department_id FROM department
WHERE department_id =
(
SELECT department_id FROM employee
WHERE level =
(
SELECT MIN(level) FROM employee
WHERE department_id IS NOT NULL
start WITH employee_id = 19
connect by employee_id = prior manager_id
)
start WITH employee_id = 19
connect by employee_id = prior manager_id
);
У вас есть идеи, как исправить первый запрос? Или упростить второй? Заранее спасибо.