本文主要是介绍ORACLE 数据库的级联查询 一句sql搞定(例:部门多级,类型多级),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
oracle中,有时候会遇到批量操作多级部门下的数据或者是多级类别下文档,一句sql搞定想要查询的数据,并对其增删改操作,如下:
查询某条数据下是否有子节点:
select * //要查询的字段
from table //具有子接点id和父接点id的表
start with childid=id数据 //给定一个开始查询的id(字段名为子接点id,以及开始的id数据)
connect by prior childid= pid //联接条件为子接点等于父接点
查询某条数据上是否有父节点:
from table //具有子接点id和父接点id的表
start with childid=id数据 //给定一个开始查询的id(字段名为子接点id,以及开始的id数据)
connect by prior pid= childid //联接条件为父接点等于子接点
实际举个例子,更好理解:
多级查询,数据结构如下:
abcde1e2
db数据字段如下:
id name unit_id pid
-------------------------------------------------------
710 部门文档 527
1262 规章制度 527 710
2331 日常管理 527 710
2349 设备管理 527 710
2350 电梯 527 2349
2351 综合办公楼电梯 527 2350
2352 电梯保养作业报告 527 2351
2353 电梯维修报告 527 2351
12837 港口(建筑)设施维修管理 527 710
12838 港口主要设施 527 12837
12839 港口附属设施 527 12837
在上表中查找id=2351 相关联的所有的父节点以及所有的子节点数据,级联sql如下:
select t.* from OA_DEPT_DOC_TYPE t start with id='2351' connect by prior pid = id
UNION
select t.* from OA_DEPT_DOC_TYPE t start with id='2351' connect by prior id = pid
查询的结果如下:
id name unit_id pid
-----------------------------------------------
710 部门文档 527
2349 设备管理 527 710
2350 电梯 527 2349
2351 综合办公楼电梯 527 2350
2352 电梯保养作业报告 527 2351
2353 电梯维修报告 527 2351
这篇关于ORACLE 数据库的级联查询 一句sql搞定(例:部门多级,类型多级)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!