|
|
#10
球球2008-10-12 12:18
CREATE TABLE tb
(
id int IDENTITY(1,1),
level int,
rootid int,
name nvarchar(20)
)
GO
INSERT INTO tb VALUES(1,0,'水果')
INSERT INTO tb VALUES(2,1,'瓜类')
INSERT INTO tb VALUES(3,2,'西瓜')
INSERT INTO tb VALUES(3,2,'哈密瓜')
INSERT INTO tb VALUES(1,0,'蔬菜')
INSERT INTO tb VALUES(2,5,'青菜')
INSERT INTO tb VALUES(3,2,'香瓜')
INSERT INTO tb VALUES(3,6,'上海青')
GO
DECLARE @t TABLE
(
id int,
level int,
name nvarchar(20),
rootid int,
path nvarchar(4000)
)
INSERT INTO @t SELECT id,level,name,rootid,name FROM tb WHERE rootid=0
WHILE @@ROWCOUNT<>0
BEGIN
INSERT INTO @t
SELECT b.id,b.level,b.name,b.rootid,a.path+'/'+b.name
FROM @t a,tb b
WHERE a.id=b.rootid AND NOT EXISTS(SELECT 1 FROM @t WHERE id=b.id)
END
SELECT id,path FROM @t WHERE level=3 OR level=4
GO
DROP TABLE tb
[[it] 本帖最后由 球球 于 2008-10-12 13:52 编辑 [/it]]
|