即兴而抒

九十春光一掷梭,花前酌酒唱高歌。枝上花开能几日,世上人生能几何。 好花难种不长开,少年易过不重来。人生不向花前醉,花笑人生也是呆。 --明·唐寅 <<花下酌酒歌>>   
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2叉树

Posted on 2007-06-12 00:31  pony  阅读(266)  评论(1)    收藏  举报
--得到部门和员工姓名
create function dbo.GetTreeInfo
(
@Employe_Number as varchar(10)                                          -----员工编号
)
returns @TreeInformation table
(
Employe_Number varchar(10) not null,                                    ----员工编号
Employe_Name varchar(10) not null,                                       ----员工姓名   
Employe_Manager_Number varchar(10)not null,                     ----上级员工号
Dept_Name varchar(10)not null,                                              ----部门编号
ELevel int not null
)as
begin
declare @level as int
select @level=0
insert into @TreeInformation
select A.Employe_Number,A.Employe_Name,A.Employe_Manager_Number,C.Dept_Name,@level from Employe as A
right join Employe_Dept as B on A.Employe_Number=B.Employe_Number
right join Dept as C on B.Dept_Number=C.Dept_Number where  A.Employe_Number=@Employe_Number
while @@rowcount>0
begin
set @level=@level+1
insert into @TreeInformation
select D.Employe_Number,D.Employe_Name,D.Employe_Manager_Number,E.Dept_Name,@level from
(select A.Employe_Number,A.Employe_Name,A.Employe_Manager_Number,C.Dept_Name from Employe as A
right join Employe_Dept as B on A.Employe_Number=B.Employe_Number
right join Dept as C on B.Dept_Number=C.Dept_Number) as D
join @TreeInformation as E
on D.Employe_Manager_Number=E.Employe_Number and  E.ELevel=@level-1
end
return
end




--遍历请假审核人
create function dbo.GetSubtreeInfo
(
@Employe_Number as varchar(10)
)
returns @treeinfo table
(
Employe_Number varchar(10) not null,
Employe_Name varchar(10) not null,
Employe_Manager_Number varchar(10)not null,
ELevel int not null 
)as
begin
declare @level as int
select @level=0
insert into @treeinfo
select Employe_Number,Employe_Name,Employe_Manager_Number,@level
from Employe where Employe_Number=@Employe_Number
while @@rowcount >0
begin
set @level=@level+1
insert into @treeinfo
select A.Employe_Number,A.Employe_Name,A.Employe_Manager_Number,@level
from Employe as A join @treeinfo as B
on A.Employe_Number = B.Employe_Manager_Number and B.ELevel=@level-1
end
return
end