表结构是这样的:deptid 部门编号
deptname 部门名称
order 排序用的序号
fatherid 上级部门编号其中有一个fatherid为0的根节点。要求查询结果按照树的上下顺序排列,每个部门下面是它的子部门,同级别的部门按照order排序。根部门
一级部门1
一级部门1的子部门1
一级部门1的子部门1的子部门1
一级部门1的子部门2
一级部门2
一级部门2的子部门1
。
。
。
deptname 部门名称
order 排序用的序号
fatherid 上级部门编号其中有一个fatherid为0的根节点。要求查询结果按照树的上下顺序排列,每个部门下面是它的子部门,同级别的部门按照order排序。根部门
一级部门1
一级部门1的子部门1
一级部门1的子部门1的子部门1
一级部门1的子部门2
一级部门2
一级部门2的子部门1
。
。
。
start with deptid=4
connect by fatherid =prior deptid
用你的方法可以满足每个部门下面跟着它的子部门,但是没有满足同级部门按照order排序。TodayZ(天山浪子):
你的方法不错我正在试。
-------------------- -------------------- -------------------- --------------------
1 根部门 0
101 一级部门1 0
102 一级部门2 0
10101 子部门1 101
10102 子部门2 101
10201 子部门1 102
10202 子部门2 102
10203 子部门3 1028 rows selectedSQL>
SQL> select deptid, Ltrim(SYS_CONNECT_BY_PATH (deptname, '的'), '的') from tts
2 connect by prior deptid = fatherid
3 start with fatherid = '0'
4 /DEPTID LTRIM(SYS_CONNECT_BY_PATH(DEPT
-------------------- --------------------------------------------------------------------------------
1 根部门
101 一级部门1
10101 一级部门1的子部门1
10102 一级部门1的子部门2
102 一级部门2
10201 一级部门2的子部门1
10202 一级部门2的子部门2
10203 一级部门2的子部门38 rows selected
start with deptid=4
connect by fatherid =prior deptid看下这样行不
start with deptid=4
connect by fatherid =prior deptid再试一下