2016年8月19日 Oracle如何查询存在层级结构的数据
场景介绍:
一个部门下有多个子部门,子部门下还有多个子部门,知道前部门id,怎么将子部门(包含子子部门)信息全部查出。各部门之间的父子关系是通过一张表维护的。如下表DEPT:
id(部门id) | depname(部门名称) | pid(父部门id) |
1 | 科技部 | 0 |
2 | 科技一部 | 1 |
3 | 科技二部 | 1 |
4 | 科技一部一组 | 2 |
5 | 科技一部二组 | 2 |
6 | 科技二部一组 | 3 |
7 | 科技二部一组一群 | 6 |
现在我只知道,科技二部id为3.那么如何查询科技二部下的所有部门:Sql如下:
select t.id,t.depname from DEPT t start with t.pid='3'
connect by prior t.id = t.pid
此语句的查询结果为:
6 科技二部一组
7 科技二部一组一群