问一个SQL语句,大家帮帮我~

moudy 2005-08-30 10:00:24
表结构:

mz(名字) lingdao(领导)
A B
B C
C D
E B
F C

A的领导是B,B的领导是C。。。。。所以C也是A的领导

我想查询A的所有领导
即结果为三个: B、C、D

请问这个SQL语句怎么写??

大家帮帮我~~~
...全文
132 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgsasd311 2005-08-30
  • 打赏
  • 举报
回复
create table tbl (mz varchar(10),lingdao varchar(10))
insert into tbl
select 'A','B' union all
select 'B','C' union all
select 'C','D' union all
select 'E','B' union all
select 'F','C'
go
create function f_test(@mz varchar(10))
returns varchar(3000)
as
begin
declare @str varchar(3000)
set @str=''
while @mz is not null
begin
SET @mz=(SELECT LINGDAO FROM TBL WHERE MZ=@mz)
--set @str=@str+isnull(@mz,'')+','
set @str=@str+case when @mz is null then '' else '、'+@mz end
end
return case when len(@str)>0 then right(@str,len(@str)-1) else '' end
end
go

PRINT dbo.f_test('a')
/*
B、C、D
*/
PRINT dbo.f_test('d')
moudy 2005-08-30
  • 打赏
  • 举报
回复
多谢 libin_ftsafe(子陌红尘)。。。( ^_^ )
moudy 2005-08-30
  • 打赏
  • 举报
回复
楼上的方法可以,我先改改看能能不变成纯SQL。。。等会揭贴
子陌红尘 2005-08-30
  • 打赏
  • 举报
回复
--生成测试数据
create table BOM(MZ VARCHAR(20),lingdao VARCHAR(20))
insert into BOM select 'A','B'
insert into BOM select 'B','C'
insert into BOM select 'C','D'
insert into BOM select 'E','B'
insert into BOM select 'F','C'
go

--创建用户定义函数
create function f_getParent(@ID VARCHAR(20))
returns @t table(ParentID VARCHAR(20),Level INT)
as
begin
declare @i int
set @i = 0
insert into @t select lingdao,@i from BOM where mz = @ID

while @@rowcount<>0
begin
set @i = @i + 1
insert into @t select a.lingdao,@i from BOM a,@t b where a.mz=b.ParentID and b.Level = @i-1
end

return
end
go


--执行查询
select ParentID from dbo.f_getParent('A')
go

--删除测试数据
drop function f_getParent
drop table BOM
go
moudy 2005-08-30
  • 打赏
  • 举报
回复
不懂~~~~bom是什么?
jinjazz 2005-08-30
  • 打赏
  • 举报
回复
搜索bom

34,590

社区成员

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

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