如何从数据库取出一颗树并且按指定字段排序

[复制链接]
查看11 | 回复0 | 2006-9-18 09:24:00 | 显示全部楼层 |阅读模式
数据库建立如下:
create table thegroup(
groupid number(10) not null, -- 组ID
groupname varchar2(50) not null, -- 组名
parentid number(10), -- 父组ID
constraint pk_thegroup primary key (groupid)
);
alter table thegroup
add constraint fk_thegroup_01 foreign key (parentid)
references thegroup (groupid)
insert into thegroup (groupid,groupname,parentid) values (1,'总公司',null);
insert into thegroup (groupid,groupname,parentid) values (2,'总部',1);
insert into thegroup (groupid,groupname,parentid) values (3,'行政部',2);
insert into thegroup (groupid,groupname,parentid) values (4,'财务部',2);
insert into thegroup (groupid,groupname,parentid) values (5,'研发部',2);
insert into thegroup (groupid,groupname,parentid) values (6,'上海分公司',1);
insert into thegroup (groupid,groupname,parentid) values (7,'上海分公司行政部',6);
insert into thegroup (groupid,groupname,parentid) values (8,'上海分公司市场部',6);
公司的组织结构是一颗树,现在希望把这颗树取出来,并且要求把同一个节点下的子节点都按照组名排序,即查询出如下结果:
GROUPID GROUPNAME PARENTID
1
总公司
6
上海分公司
1
7
上海分公司行政部 6
8
上海分公司市场部 6
2
总部
1
4
财务部
2
3
行政部
2
5
研发部
2
如上海分公司的名称排在总部之前,因此上海分公司这个子树在总部子树之前,然后上海分公司下2个部门也按照名称排序
现在使用select * from thegroup connect by prior groupid=parentid start with parentid is null可以将整棵树取出,但是没法按名称对子节点排序,请问如何能同时达到这两种效果呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行