Oracle-如何有效地做分层查询

标签: Java Oracle
发布时间: 2017/4/15 18:17:33
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有在表下面两个列定义人和经理的关系。是否要获取所有人属于一个特定的经理和所有它是间接采访,什么将是最好的方法吗?

此外如何做到具体到某个级别,例如获取所有用户的特定 personid 高达级别 2 或 n 等

PERSONID REPORTTO_PERSONID
2              1
3              1
4              1
5              1
6              4
7              4
8              7
9              2

解决方法 1:

这会以递归方式向 personid 报告的所有人 = 2

level列表示在中指定的行的相对距离 start with 条件。不在层次结构中的整体水平。

select *
from (
  select personid, 
         reportto_personid, 
         level as lvl
  from the_table
  start with personid = 2
  connect by prior personid = reportto_personid
) t 
where lvl <= 2;

更多细节在手册 》和本页右侧列出的所有问题。

赞助商