如何使用分层查询获取所有经理的列表
How to get list of all manager using hierarchical query
我想提取担任我经理的员工名单。
看看下面的查询:
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:
将其更改为 SYS_CONNECT_BY_PATH (manager, ':')
,然后删除为根级别 NULL
管理器附加的前导 :
(如果您想要尾随 :
,则添加|| ':'
):
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 |
我想提取担任我经理的员工名单。 看看下面的查询:
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:
将其更改为 SYS_CONNECT_BY_PATH (manager, ':')
,然后删除为根级别 NULL
管理器附加的前导 :
(如果您想要尾随 :
,则添加|| ':'
):
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 |