Thursday, September 25, 2008

The hierarchical query and SQL Server 2005

We can create hierarchical queries using CTE
Here is the common example :
create table Employees
( id int primary key nonclustered, name varchar(50), boss int constraint FK_boss foreign key references employees(id)
)insert into employees values(1, 'Company CEO', null) insert into employees values(2, 'Manager 1', 1)
insert into employees values(3, 'Manager 2', 1)
insert into employees values(4, 'Manager 3', 1)
insert into employees values(5, 'Asst. Manager', 2)
insert into employees values(6, 'TeamLead1', 5)
insert into employees values(7, 'TeamLead2', 5)
insert into employees values(8, 'TeamMember1', 6)
insert into employees values(9, 'TeamMember2', 6)
insert into employees values(10, 'TeamMember3', 6)
insert into employees values(11, 'TeamMember4', 7)
insert into employees values(12, 'TeamMember5', 7) declare @employee_id as smallint
set @employee_id = 6
;with report(id, name)
AS
( SELECT id, name from employees where boss = @employee_id
union all
SELECT E.id, E.name from employees E JOIN report R on R.id = E.boss
)
Select * from report

No comments: