【问题标题】:How to get list of all manager using hierarchical query如何使用分层查询获取所有经理的列表
【发布时间】:2018-09-07 09:25:00
【问题描述】:

我想提取属于我的经理的员工列表。 看看下面的查询:

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:

【问题讨论】:

  • 你能给我看看表中的数据吗?
  • 你为什么不把你的用户名去掉? SUBSTR(SYS_CONNECT_BY_PATH (username, ':'), 1, LENGTH(SYS_CONNECT_BY_PATH (username, ':'))-LENGTH(username))

标签: oracle hierarchical-query


【解决方案1】:

将其更改为 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 

Results

| Liste Membres | LEVEL |
|---------------|-------|
|     :1:20:120 |     4 |

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多