数据:
Class_Id Class_Name Parent_ID Class_Path Class_Depth Class_Order Class_Intro1 家具 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求 分类上移下移的存储过程
Class_Id Class_Name Parent_ID Class_Path Class_Depth Class_Order Class_Intro1 家具 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求 分类上移下移的存储过程
创建用户定义函数,每个子节点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
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的顺序就改变