Вот мой запрос, который возвращает цепочку супервизоров для сотрудника, но использует несколько вложенных операторов SELECT.
Я хотел бы знать, можно ли сделать этот запрос более эффективным. Запрос предназначен для приложения, в котором 3 уровня управления позволяют сотруднику пройти учебный курс. В настоящее время нам требуется 3 уровня одобрений, но это может измениться до 4 или более.
SELECT badge as employee,
supervisor_badge as boss1,
(select supervisor_badge FROM hr_data level2 WHERE badge = level1.supervisor_badge) as boss2
(select supervisor_badge FROM hr_data level3 WHERE badge =
(select supervisor_badge FROM hr_data level2 WHERE badge = level1.supervisor_badge)) as boss3
FROM hr_data level1 WHERE BADGE = '123456';
значок = идентификатор сотрудника
supervisor_badge = значок руководителя работника
остальные поля находятся в таблице hr_data
badge supervisor_badge
123456 111111
111111 454545
454545 332211
вывод
employee boss1 boss2 boss3
123456 111111 454545 332211