您的位置:首页 > 数据库

SQL tree data struct(6): NestedSet2AdjList

2008-03-02 11:52 274 查看
declare @personnel table(emp varchar(30), lft int, rgt int)
insert @personnel
select 'Albert', 1, 12
union all select 'Bert', 2, 3
union all select 'Chuck', 4, 11
union all select 'Donna', 5, 6
union all select 'Eddie', 7, 8
union all select 'Fred', 9, 10

select emp,
boss=(select top 1 emp from @personnel super where sub.lft between super.lft and super.rgt
and sub.emp <> super.emp order by super.lft desc)
from @personnel sub
go

declare @personnel table(emp varchar(30), lft int, rgt int)
insert @personnel
select 'Albert', 1, 12
union all select 'Bert', 2, 3
union all select 'Chuck', 4, 11
union all select 'Donna', 5, 6
union all select 'Eddie', 7, 8
union all select 'Fred', 9, 10
-- too slow
select emp=(select emp from @personnel where rgt - lft = (select max(rgt - lft) from @personnel)), boss = NULL
union all
select sub.emp, boss=super.emp
from @personnel as sub, @personnel as super
where sub.lft between super.lft and super.rgt
and sub.emp <> super.emp
and super.lft = (select max(super2.lft) from @personnel super2
where sub.lft between super2.lft and super2.rgt and sub.emp <> super2.emp)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: