分级查询主要用于查询树形结构的记录。树形结构的数据存放在表中,数据之间的层次关系即父子关系,通过表中的列与列间的关系来描述。 

树形结构示例:

       查询雇员表中员工编号、姓名及员工负责人,结果如图1所示。从结果中可以发现,Hardy和Rory的负责人是John,John的负责人是Donald;Eric和Kary的负责人是Harky,Harky的负责人是Donald,最终可以形成一张树形结构图,如图2所示。

Oracle分级查询for CONNECT BY PRIOR

图1

Oracle分级查询for CONNECT BY PRIOR

图2

 

分级查询语法格式:

  1. SELECT [LEVEL], COLUMN, ...  
  2. FROM   TABLE  
  3. [WHERE CONDITION(S)]  
  4. [START WITH CONDITION(S)]  
  5. [CONNECT BY PRIOR COLUMN1 = COLUMN2] ;<strong>  
  6. </strong>  

说明:
1.LEVEL代表层级。 在具有树结构的表中,每一行数据都是树结构中的一个节点,由于节点所处的层次位置不同,所以每行记录都可以有一个层号。层号根据节点与根节点的距离确定。不论从哪个节点开始,该起始根节点的层号始终为 1 ,根节点的子节点为 2 , 依此类推。


2.START WITH定义查找起始节点。在自顶向下查询树结构时,不但可以从根节点开始,还可以定义任何节点为起始节点,以此开始向下查找。这样查找的结果就是以该节点为开始的结构树的一枝。 不但可以指定一个根节点,还可以指定多个根节点。START WITH 子句为可选项,若该子句被省略,则表示所有满足查询条件的行作为根节点。


3.CONNECT BY 子句指定层次检索的顺序。 根据PRIORY 运算符放置在连接关系的位置,从而确定查找树结构是的顺序是自顶向下还是自底向上。CONNECT BY PRIOR PARENT KEY= CHILD KEY,表明顺序是自顶向下;CONNECT BY PRIOR CHILD KEY= PARENT KEY,表明顺序是自底向上。

eg:

create table employees
(
 eid integer,
 ename varchar2(10),
 manageid integer
)
select * from employees;
insert into employees(eid,ename,manageid) values(001,'zjw',100);
insert into employees(eid,ename,manageid) values(002,'yf',100);
insert into employees(eid,ename,manageid) values(003,'zc',100);
insert into employees(eid,ename,manageid) values(100,'lc',200);

Oracle分级查询for CONNECT BY PRIOR

相关文章:

  • 2021-06-14
  • 2021-11-23
  • 2021-10-17
  • 2021-10-20
  • 2021-06-27
  • 2021-10-07
  • 2021-12-22
  • 2021-08-28
猜你喜欢
  • 2022-12-23
  • 2021-09-21
  • 2021-11-01
  • 2021-11-27
  • 2021-10-17
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案