多重关联表查询问题

木村戒奶 2006-03-19 11:06:17
部门表:
id | name | belong(从属)
01 | 部门1| 00
02 | 部门2| 01
03 | 部门3| 00
员工表:
id | name | deptid
01 | 小红 | 01
02 | 小明 | 02
03 | 小张 | 03

怎样把部门1和从属部门1的部门2,所包含的员工都查找出来呢,谢谢!
...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
撸大湿 2006-03-19
  • 打赏
  • 举报
回复
这个也改一下,去掉那个TABLE变量
CREATE FUNCTION findall (myid int)
RETURNS @list table (id int) AS
BEGIN
declare @i int
insert into @list select @myid
set @i=0
DECLARE findid CURSOR FOR select id from department where belong=@myid
Open findid
While @@FETCH_STATUS = 0
begin
FETCH next FROM findid into @i

if @@FETCH_STATUS = 0
insert into @list select @i union select id from dbo.findall(@i)
end
CLOSE findid
DEALLOCATE findid

return
END
dfwz2004 2006-03-19
  • 打赏
  • 举报
回复
学习
撸大湿 2006-03-19
  • 打赏
  • 举报
回复
写错了
然后
select * form 员工表 where deptid in (select id as deptid from dbo.findall(1))
撸大湿 2006-03-19
  • 打赏
  • 举报
回复
然后
select * form 员工表 where deptid in (select id as deptid from select id from dbo.findall(1))
撸大湿 2006-03-19
  • 打赏
  • 举报
回复
CREATE FUNCTION findall (@table nvarchar(50),@myid int)
RETURNS @list table (id int) AS
BEGIN
declare @i int
insert into @list select @myid
set @i=0
DECLARE findid CURSOR FOR select id from department where father=@myid
Open findid
While @@FETCH_STATUS = 0
begin
FETCH next FROM findid into @i

if @@FETCH_STATUS = 0
insert into @list select @i union select id from dbo.findall(@i)
end
CLOSE findid
DEALLOCATE findid

return
END

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧