首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一复杂查询语句~解决方法

2012-01-15 
求一复杂查询语句~~~~~~~~急~~~~~~~~~~表1user(员工)dept(部门)张三it部李四人事科小王第一产品科注:人事

求一复杂查询语句~~~~~~~~急~~~~~~~~~~
表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 行)

热点排行