Oracle - 如何有效地执行分层查询

时间:2013-07-04 10:25:39

标签: java oracle

我有一张表,其中两列下面定义了person和mgr的关系。如果我必须获取属于特定经理的所有人以及所有它的间接报告,那么最佳方法是什么?

另外如何针对某个级别进行具体操作,例如获取特定personid的所有用户,直到2级或n等

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

1 个答案:

答案 0 :(得分:0)

这会递归地找到所有向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;

更多详情are in the manual以及本页右侧列出的所有问题。