求一复杂查询语句~~~~~~~~急~~~~~~~~~~
表1
user(员工) dept(部门)
张三 it部
李四 人事科
小王 第一产品科
注:人事科属于行政部
表2
dept_name(子部门) dept_parent(主部门)
it部 it中心
人事科 行政部
行政部 行政中心
第一产品科 第一产品软件部
第一产品软件部 第一产品部
第一产品部 研发中心
问题是 sql语句怎么写,才能知道这个人属于那个 中心
查出的结果是
user dept_parent
张三 it中心
李四 行政中心
小王 研发中心
------解决方案--------------------楼上的忽视了部门的父子结构.
------解决方案--------------------create function f_getParent(@child varchar(20))
returns varchar(30)
as
begin
while exists(select 1 from t2 where dept_name=@child and dept_parent <> ' ')
select @child=dept_parent from t2 where dept_name=@child
return @child
end
go
create table t1([user] varchar(20),dept varchar(20))
insert t1 select '张三 ', 'it部 '
union all select '李四 ', '人事科 '
union all select '小王 ', '第一产品科 '
create table t2(dept_name varchar(30),dept_parent varchar(30))
insert t2 select 'it部 ', 'it中心 '
union all select '人事科 ', '行政部 '
union all select '行政部 ', '行政中心 '
union all select '第一产品科 ', '第一产品软件部 '
union all select '第一产品软件部 ', '第一产品部 '
union all select '第一产品部 ', '研发中心 '
select [user],dept_parent=dbo.f_getParent(dept) from t1
drop table t1,t2
drop function f_getParent
user dept_parent
-------------------- ------------------------------
张三 it中心
李四 行政中心
小王 研发中心
(所影响的行数为 3 行)