|
Вывести иерархию организации
|
|||
---|---|---|---|
#18+
Друзья, прошу помощи по составлению запроса. Имеем 2 таблицы: create table t_dept ( dept_id bigint not null, dept_name VARCHAR(100), primary key (dept_id)); create table t_emp ( EMP_ID bigint not null, DEPT_ID bigint, CHIEF_ID bigint, EMP_NAME varchar(100), SALARY bigint, primary key (EMP_ID)); alter table t_emp add constraint EMPLOYEE_EMPLOYEE_FK foreign key (CHIEF_ID) references t_emp; alter table t_emp add constraint EMPLOYEE_DEPARTMENT_FK foreign key (DEPT_ID) references t_dept; Необходимо сделать запрос выводящий всю иерархию организации. Отдел (сортировка по названию), под ним руководитель (сортировка по ФИО), под ним сотрудники(в порядке по уменьшению ЗП). Или хотя бы подскажите куда копать, всю голову сломал... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 16:33 |
|
Вывести иерархию организации
|
|||
---|---|---|---|
#18+
По классике иерархия всегда перебирается рекурсией. MikeR.Ru Для рекурсии используют CTE Только надо понимать, что рекурсия сильно много потребляет ресурсов в любых языках. Ну и реально лучше начать с изучения плана запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 08:28 |
|
Вывести иерархию организации
|
|||
---|---|---|---|
#18+
GenaV, Тебе сюда 12561782 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 13:07 |
|
Вывести иерархию организации
|
|||
---|---|---|---|
#18+
MikeR.Ru, спасибо за ссылку! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 16:30 |
|
Вывести иерархию организации
|
|||
---|---|---|---|
#18+
В результате получился вот такой код: with recursive performers as ( select EMP_ID, EMP_NAME, CHIEF_ID, SALARY from t_emp where EMP_ID = 2 union select e.EMP_ID, e.EMP_NAME, e.CHIEF_ID, e.SALARY from t_emp e join performers f on f.EMP_ID = e.CHIEF_ID ) select * from performers order by SALARY; Но в таком запросе рекурсия останавливается после вывода сотрудников только одного отдела (dept_id). Не совсем понимаю, как продолжить выборку по остальным оставшимся отделам и при этом выводить название отдела в итоговый результат... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 17:04 |
|
|
start [/forum/topic.php?fid=53&gotonew=1&tid=1994418]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 270ms |
0 / 0 |