【代码保留】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则代表要查询第一级
posted on 2007-11-17 04:00 volnet(可以叫我大V) 阅读(1380) 评论(0) 编辑 收藏 举报