您的位置:首页 > 数据库 > Oracle

关于Oracle 父-子关系操作

2011-02-28 17:47 197 查看
如一部门表结构为orgid,orgName,parentid,分别为部门ID,部门名,部门的上级ID。

现需要得到如下这种结构

企业信息化部-->本部职能部门-->中国电信广东公司

可直接利用oracle提供sys_connect_by_path函数得到如上的结果集

语句如下:

假定 "企业信息化部"的部门ID为'OR1200000542'

select ltrim(sys_connect_by_path(um.orgname,'-->'),'-->') as 部门, sys_connect_by_path(um.orgid,'-->')
from umorg um where level = 3
start with um.orgid = 'OR1200000542'
connect by prior um.parentid =um.orgid

即可得到它的父层级关系。

倘若需要知道'OR1200000542'部门的完整层次结构,只需去掉level = 3这个条件即可
部门 level
企业信息化部 1
企业信息化部-->本部职能部门 2
企业信息化部-->本部职能部门-->中国电信广东公司 3

LPAD的用法
select lpad(um.orgname,2*level+lengthb(um.orgname),'-') 部门
from umorg um
start with um.orgid = 'OR1200000542'
connect by prior um.parentid =um.orgid
得到结果:
1 --企业信息化部
2 ----本部职能部门
3 ------中国电信广东公司
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: