【代码保留】Oracle树形查询

本文介绍了一种通过树形查询语句实现的查询方法,该方法能够查找当前层级(部门)所属的某一上级的所有子集,适用于权限验证等场景。以层级结构为例,展示了如何从指定层级开始查询其上级直至第一级,并向下查询所有子节点。

功能:

查找当前层级(部门)所属的某一上级的所有子集。常用于查询权限等(人可能属于××子部门,但是却需要查询该同志是否在××子部门的上级部门有职务(总不能说人家是××子部门的就不是××公司的吧~))

原理:

                                    1                                       (1级)

                           21                 22                          (2级)

                    31     32             33    34                     (3级)

                41,42   43,44      45,46   47,48                (4级)

当前层级可能为层级图中的其中一级,假设为3级的33,那么结果集可能需要查找其所隶属的二级以下的所有子集,此例中,33的商机为22,22的所有下级包括22、33、34、45、46、47、48。

思路:

树形查询语句可以实现向上以及向下的查询(常用来查询树中节点的子节点以及父节点),因此,先向上查询到级别N,然后在从N开始向下查询其子集即可。

SQL:

select t.brc_id
          from asm_branch t
        CONNECT BY t.brc_parentid = PRIOR t.brc_id
         START WITH t.brc_id in (select t.brc_id
                                   from asm_branch t
                                  where t.brc_level = '1'
                                 CONNECT BY t.brc_id = PRIOR t.brc_parentid
                                  START WITH t.brc_id = '53')

53可替换为任意要查询级别以下(包括同级)的编号,1则代表要查询第一级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值