日期:2014-05-16  浏览次数:20655 次

求一个SQL语句,关联查询的。
表[UserName]员工姓名

CREATE TABLE [UserName] ([Id] int,[Name] [nvarchar](50))
insert into [UserName]
select 1, '杜玲利' union all
select 2, '唐红' union all
select 3, '李小林' union all
select 4, '张光' union all
select 5, '王涛' union all
select 6, '贾云' union all
select 7, '张明华'union all
select 8, '陈星' union all
select 9, '李春华'



表[Compay]公司/部门名字

CREATE TABLE [Compay] ([Id] int,[Name] [nvarchar](50),[ParentId] int,[Tree] int)
insert into [Compay]
select 1, '总部', 0, 0 union all
select 2, '上海分公司', 1, 1 union all
select 3, '总部-人事部', 1, 1 union all
select 4, '上海分公司-销售部', 2, 2 union all
select 5, '上海分公司-电脑部', 2, 2 union all
select 6, '上海分公司-电脑部-电脑1部', 5, 3 union all
select 7, '上海分公司-电脑部-电脑1部-精英组', 6, 4 



表[User_Compay]员工 与 公司/部门的关联关系

CREATE TABLE [User_Compay] ([Id] int,[UserId] int,[CompayId] int)
insert into [User_Compay]
select 1, 1, 3 union all
select 2, 7, 1 union all
select 3, 3, 2 union all
select 4, 5, 4 union all
select 5, 2, 6 union all
select 6, 4, 5 union all
select 7, 6, 7 union all
select 8, 8, 2 union all
select 9, 9, 5 


我想得到所有员工这样的列表:员工Id   员工姓名   部门Id   部门名   部门Tree   公司Id   公司名  公司级的Tree

以其中4个员工的结果为例:
员工Id   员工姓名   部门Id   部门名                                                      部门Tree   公司Id   公司名             公司Tree
6           贾云            7           上海分公司-电脑部-电脑1部-精英组    4                  2           上海分公司      1
3          李小林         2           上海分公司                                              1                  2           上海分公司&n