Как получить список всех менеджеров, используя иерархический запрос - PullRequest
0 голосов
/ 07 сентября 2018

Я хотел бы получить список сотрудников, которые являются моими менеджерами.Посмотрите на запрос ниже:

SELECT   SYS_CONNECT_BY_PATH (username, ':') AS "Liste Membres",LEVEL
  FROM   employees
 WHERE   CONNECT_BY_ISLEAF = 1
         AND username = '150') -- My_code
START WITH   manager IS NULL
CONNECT BY   PRIOR username = manager 

Результат этого запроса:

:1:20:120:150

Результат, который я хочу получить:

:1:20:120:

1 Ответ

0 голосов
/ 07 сентября 2018

Измените его на SYS_CONNECT_BY_PATH (manager, ':'), а затем удалите начальный :, добавляемый для менеджера корневого уровня NULL (и, если вы хотите завершающий :, добавьте || ':'):

SQL Fiddle

Настройка схемы Oracle 11g R2 :

CREATE TABLE EMPLOYEES ( manager, username ) AS
  SELECT NULL, 1 FROM DUAL UNION ALL
  SELECT 1, 20 FROM DUAL UNION ALL
  SELECT 20, 120 FROM DUAL UNION ALL
  SELECT 120, 150 FROM DUAL;

Запрос 1 :

SELECT   SUBSTR( SYS_CONNECT_BY_PATH (manager, ':'), 2 ) AS "Liste Membres",
         LEVEL
FROM     employees
WHERE    CONNECT_BY_ISLEAF = 1
AND      username = '150' -- My_code
START WITH   manager IS NULL
CONNECT BY   PRIOR username = manager 

Результаты

| Liste Membres | LEVEL |
|---------------|-------|
|     :1:20:120 |     4 |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...