请问怎么实现这样的查询结果呢?

chuxin1 2005-04-22 09:45:46
例:

[类ID] [类名称] [父类ID] [层次]
11 配件 0 1
11001 内存 11 2
12 耗材 0 1
12001 墨盒 12 2
12001001 佳能墨盒 12001 3
12001002 利盟黑盒 12001 3
11002 A4纸 12 2

想实现查询结果为:
[类ID] [类名称] [父类ID] [层次] [新值]
11001 内存 11 2 配件->内存
12001001 佳能墨盒 12001 3 耗材->墨盒->佳能墨盒
12001002 利盟墨盒 12001 3 耗材->墨盒->利盟墨盒
11002 A4纸 12 2 耗材->A4纸

...全文
101 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuxin1 2005-04-22
  • 打赏
  • 举报
回复
谢谢zjcxc(邹建).
winternet 2005-04-22
  • 打赏
  • 举报
回复
up
zjcxc 元老 2005-04-22
  • 打赏
  • 举报
回复
--测试

--测试数据
create table tb([类ID] varchar(10),[类名称] varchar(10),[父类ID] varchar(10),[层次] int)
insert tb select '11' ,'配件' ,'0' ,1
union all select '11001' ,'内存' ,'11' ,2
union all select '12' ,'耗材' ,'0' ,1
union all select '12001' ,'墨盒' ,'12' ,2
union all select '12001001','佳能墨盒','12001',3
union all select '12001002','利盟黑盒','12001',3
union all select '11002' ,'A4纸' ,'12' ,2
go

--写个处理函数
create function f_fullname(@类ID varchar(50))
returns varchar(8000)
as
begin
declare @r varchar(8000)
select @r=类名称,@类ID=父类ID from tb where 类ID=@类ID
while @@rowcount>0 and @类ID<>'0'
select @r=类名称+'->'+@r,@类ID=父类ID from tb where 类ID=@类ID
return(@r)
end
go

--调用实现查询
select *,新值=dbo.f_fullname(类ID)
from tb a
where not exists(
select * from tb where 父类ID=a.类ID)
go

--删除测试
drop table tb
drop function f_fullname

/*--结果
类ID 类名称 父类ID 层次 新值
---------- ---------- ---------- ----------- --------------------------
11001 内存 11 2 配件->内存
12001001 佳能墨盒 12001 3 耗材->墨盒->佳能墨盒
12001002 利盟黑盒 12001 3 耗材->墨盒->利盟黑盒
11002 A4纸 12 2 耗材->A4纸

(所影响的行数为 4 行)

--*/
zjcxc 元老 2005-04-22
  • 打赏
  • 举报
回复
--调用实现查询(改一下,加个条件)

select *,新值=dbo.f_fullname(类ID)
from 表 a
where not exists(
select * from 表 where 父类ID=a.类ID)
zjcxc 元老 2005-04-22
  • 打赏
  • 举报
回复
--写个处理函数
create function f_fullname(@类ID varchar(50))
returns varchar(8000)
as
begin
declare @r varchar(8000)
select @r=类名称,@类ID=父类ID from 表 where 类ID=@类ID
while @@rowcount>0 and @类ID<>'0'
select @r=类名称+'->'+@r,@类ID=父类ID from 表 where 类ID=@类ID
return(@r)
end
go

--调用实现查询
select *,新值=dbo.f_fullname(类ID)
from 表

34,590

社区成员

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

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