ORACLE START WITH 语句的树级结构例子

简介: 原创 转载请注明出处   connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start by cond1 connect by cond2 where cond3;   考虑如下语句 sel...

原创 转载请注明出处

 

connect by 是结构化查询中用到的,其基本语法是:
select ... from tablename start by cond1
connect by cond2
where cond3;  

考虑如下语句

select *
from t_agency
where VALIDATE_STATUS = 'Y'
start with organ_id =1152
connect by parent_id = prior agency_id;

 

select parent_id,agency_id,organ_id from t_agency;

 

 

PARENT_ID   AGENCY_ID ORGAN_ID

----------- ----------- ----------------------------------------

         81                                    1

         81          82                  1152

         82          84                  1152006

         83          85                1688

         81          83                1688

          59                              1152

          60                             1152

         60          61               1152

         84          86               1152

                                       1

 

第一步查询会查找出

SQL> select *

  2  from t_agency

  3  where VALIDATE_STATUS = 'Y'

  4  and organ_id =1152

  5  ;

会出现5

  AGENCY_ID   PARENT_ID ORGAN_ID

----------- ----------- ----------------------------------------

         82          81                   1152

         59                                1152

         60                                1152

         61          60                  1152

         86          84                  1152

              2

第二步通过connect by parent_id = prior agency_id;

进行向子及衍生。

然后条件变为parent_id in(82,59,60,61,86)

及查询

SQL> select agency_id,parent_id,organ_id

  2  from t_agency

  3  where VALIDATE_STATUS = 'Y'

  4  and parent_id in(82,59,60,61,86);

 

  AGENCY_ID   PARENT_ID ORGAN_ID

----------- ----------- ----------------------------------------

         84            82               1152006

         61             60                  1152

得到2行,可以看出此两行来自于 父节点

 82          81   1152

60                 1152

第三步同样的操作条件变为parent_id in(84,61)

 

SQL> select agency_id,parent_id,organ_id

  2  from t_agency

  3  where VALIDATE_STATUS = 'Y'

  4  and parent_id in(84,61)

  5  ;

 

  AGENCY_ID   PARENT_ID ORGAN_ID

----------- ----------- ----------------------------------------

86                       84                   1152

  得到1行,可以看出此两行来自于 父节点

   84               82                 1152006

 

第四步继续田间变为parent_id =86

SQL> select agency_id,parent_id,organ_id

  2  from t_agency

  3  where VALIDATE_STATUS = 'Y'

  4  and parent_id =86

  5  ;

 

  AGENCY_ID   PARENT_ID ORGAN_ID

----------- ----------- ----------------------------------------

 

至此树形结构形成,并且中止。

 

82     59       60        61        86

84                 61

86

形成了8

相关文章
|
存储 Oracle 关系型数据库
Oracle的存储结构
Oracle的存储结构
134 1
|
存储 Oracle 关系型数据库
ORACLE:根据父id查询所有子孙数据,或者根据子id查询所有父数据(start with connect by prior)
一、需求: 我们在开发中经常遇到一种数据库表的设计:一个表中包含父子信息数据,也就是常说的树形数据. —> 最常见的例子就是省市区一体表,就是通过id、pid、level来进行控制,从而一张表来存储数据.我们进行拿数据的时候,不用再连表拿取,直接通过(start with connect by prior)直接便利就会得到数据.
762 2
ORACLE:根据父id查询所有子孙数据,或者根据子id查询所有父数据(start with connect by prior)
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的物理存储结构
Oracle的物理存储结构包括数据文件、联机重做日志文件、控制文件、归档日志文件、参数文件、告警日志文件、跟踪文件和备份文件。这些文件在硬盘上存储数据库的各种数据和日志信息,确保数据库的正常运行和故障恢复。视频讲解和详细说明见原文。
|
3月前
|
Oracle 关系型数据库
oracle的start with connect by prior如何使用 整理
oracle的start with connect by prior如何使用 整理
142 4
|
4月前
|
Oracle 关系型数据库 BI
ORACLE Apex: EBS多组织结构 理解与配置
【8月更文挑战第11天】在Oracle Apex中理解和配置与EBS多组织结构相关内容需掌握:1) EBS多组织结构概念及组成部分,如法律实体、业务单位与库存组织;2) Oracle Apex与EBS集成的目的与方式,包括提供友好界面及自定义业务流程;3) 在Apex中配置多组织结构应用,涉及数据访问控制、页面报表设计及业务流程集成。整体而言,需精通EBS架构与Apex开发技术,以实现高效灵活的企业解决方案。
107 2
|
7月前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
117 7
|
7月前
|
SQL Oracle 关系型数据库
Oracle PL/SQL 第二章--块结构与标识符
Oracle PL/SQL 第二章--块结构与标识符
|
7月前
|
存储 SQL Oracle
Oracle-Oracle数据库结构
Oracle-Oracle数据库结构
155 0
|
Oracle Java 关系型数据库
JSP struts2工资管理系统myeclipse开发oracle数据库bs框架java编程网结构
JSP 工资管理系统是一套完善的struts2设计系统MVC结构,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Oracle10g,使用java语言开发,系统主要采用B/S模式开发。
73 1
|
存储 SQL Oracle
Oracle数据库存储结构
Oracle数据库存储结构
108 0