关于Oracle 父-子关系操作

    技术2022-05-20  52

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

     


    最新回复(0)