如一部门表结构为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 ------中国电信广东公司