关于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 ------中国电信广东公司
现需要得到如下这种结构
企业信息化部-->本部职能部门-->中国电信广东公司
可直接利用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 ------中国电信广东公司
相关文章推荐
- 关于Oracle误操作--数据被Commit后的数据回退恢复(闪回)
- oracle 中关于表的一些操作语法
- oracle关于批量执行数据库的操作
- oracle中关于表的所有操作(创建删除表,修改表结构,创建约束,操作表数据,增删改查等)
- Oracle关于时间/日期的操作
- Oracle关于时间/日期的操作
- oracle中关于表的所有操作(创建删除表,修改表结构,创建约束,操作表数据,增删改查等)
- oracle教程之oracle关于表的结构、操作、相关概念解析
- 关于如何取Dev Express中一些控件中的数据与Oracle的一些操作
- Oracle关于时间/日期的操作
- 关于oracle的sql命令操作
- 关于oracle数据块跟操作系统数据块的关系
- 关于oracle 10g的bit数 跟 os的bit数 跟 硬件的bit数之间的支持关系
- JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法
- oracle关于时间/日期的操作
- Oracle关于时间/日期的操作
- Oracle关于时间/日期的操作
- java 关于操作oracle的clob类型(inster ,update,select)的完整例程
- JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法
- oracle教程之oracle关于索引的概念分类、相关操作解析