ORACLE中B树结构查询(start with …… connect by递归用法,同时涉及exists等)

一、简介
这个start with … connect by子句主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点。
二、应用场景
用于树的查询,下面是一个组织机构树的案例。该组织机构树设计了三张表ORGANIZATION、WORKER、 ORG_WORKER_REL三张表,其中ORG_WORKER_REL用于反映ORGANIZATION、WORKER之间的映射关系。三张表的数据截图如下:
(1)ORGANIZATION表
在这里插入图片描述
(2)WORKER表
在这里插入图片描述
(3)ORG_WORKER_REL表
在这里插入图片描述
由此可看出,此设计的ORGANIZATION表B树结构为:
在这里插入图片描述
实现方法
问题:如何根据第一事业部的ORGANIZATION_ID获取到其下所有的员工呢?(给出其中一个节点,求其最终子节点或最终父节点)。下面分布来解析实现的思路,如果有员工不属于项目一部、项目二部、项目三部,而是只属于第一事业部,或者是项目一部、项目二部、项目三部下面又分成了多个部门,如下的方法也实现了查询,这也是递归查询的意义。
(1)start with … connect by查询ORGANIZATION
在这里插入图片描述
(2)查询关联表,得到所有的worker_id,注意exists的用法
在这里插入图片描述
(3)关联查询worker表得到需要的用户信息
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值