无限分级 分类上移下移 存储过程

qqzeng-ip 2010-01-04 08:19:36
数据:
Class_Id Class_Name Parent_ID Class_Path Class_Depth Class_Order Class_Intro

1 家具 0 1 1 1 jiaju
2 家具1 1 1|2 2 2 jiaju1
3 家具2 1 1|3 2 4 jiaju2
4 家具3 0 4 1 7 jiaju3
5 家具4 3 1|3|5 3 5 jiaju4
6 家具5 3 1|3|6 3 6 jiaju5
7 家具6 2 1|2|7 3 3 jiaju6



求 分类上移下移的存储过程
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqzeng-ip 2010-01-04
  • 打赏
  • 举报
回复
qqzeng-ip 2010-01-04
  • 打赏
  • 举报
回复
Class_Id Class_Name Parent_ID Class_Path Class_Depth Class_Order Class_Intro

1 家具 0 1 1 1 jiaju
2 家具1 1 1|2 2 2 jiaju1
3 家具2 1 1|3 2 4 jiaju2
4 家具3 0 4 1 7 jiaju3
5 家具4 3 1|3|5 3 5 jiaju4
6 家具5 3 1|3|6 3 6 jiaju5
7 家具6 2 1|2|7 3 3 jiaju6

家具5上移到家具4前面 Class_Order的顺序就改变
htl258_Tony 2010-01-04
  • 打赏
  • 举报
回复
查询好办,修改就比较麻烦了.
--小F-- 2010-01-04
  • 打赏
  • 举报
回复
那你说要的结果吧
qqzeng-ip 2010-01-04
  • 打赏
  • 举报
回复
相当改排序那样
--小F-- 2010-01-04
  • 打赏
  • 举报
回复
什么叫做分类上下移?是BOM吗?
创建用户定义函数,每个子节点de父节点的信息


--生成测试数据
create table BOM(ID int,parentID int,sClassName varchar(10))
insert into BOM values(1,0,'1111' )
insert into BOM values(2,1,'1111_1' )
insert into BOM values(3,2,'1111-1-1' )
insert into BOM values(4,3,'1111-1-1-1')
insert into BOM values(5,1,'1111-2' )

go

--创建用户定义函数,每个子节点de父节点的信息
create function f_getParent(@ID int)
returns varchar(40)
as
begin
declare @ret varchar(40)

while exists(select 1 from BOM where ID=@ID and parentID<>0)
begin
select @ID=b.ID,@ret=','+rtrim(b.ID)+isnull(@ret,'')
from
BOM a,BOM b
where
a.ID=@ID and b.ID=a.parentID
end

set @ret=stuff(@ret,1,1,'')
return @ret
end
go

--执行查询
select ID,isnull(dbo.f_getParent(ID),'') as parentID from BOM
go

--输出结果
/*
ID parentID
----------- ----------------------------------------
1
2 1
3 1,2
4 1,2,3
5 1
*/

--删除测试数据
drop function f_getParent
drop table BOM
go
guguda2008 2010-01-04
  • 打赏
  • 举报
回复
从标题开始就看不懂

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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