首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

急这样的递归查询能否实现?该怎么解决

2012-03-23 
急:这样的递归查询能否实现???category表:categoryidcategorynameparentid1新闻02文化03国内14国际15广东3

急:这样的递归查询能否实现???
category   表:

categoryid           categoryname         parentid
1                             新闻                         0
2                             文化                         0
3                             国内                         1
4                             国际                         1
5                             广东                         3
6                             广西                         3
7                             广州                         5


当   categoryid   输入   7   时,显示以下结果:

1                             新闻                         0
3                             国内                         1
5                             广东                         3
7                             广州                         5


当   categoryid   输入   3   时,显示以下结果:

1                             新闻                         0
3                             国内                         1


当   categoryid   输入   1   时,显示以下结果:

1                             新闻                         0

[解决办法]
CREATE TABLE category
(
categoryidINT,
categorynameNVARCHAR(20),
parentidINT
)
GO

INSERT INTO category SELECT 1, '新闻 ',0
UNION ALL SELECT 2, '文化 ',1
UNION ALL SELECT 3, '国内 ',1
UNION ALL SELECT 4, '国际 ',3
UNION ALL SELECT 5, '广东 ',3
UNION ALL SELECT 6, '广西 ',5
UNION ALL SELECT 7, '广州 ',5
GO


CREATE PROCEDURE proc_catetory @id INT


AS
DECLARE @pid INT
DECLARE @count VARCHAR(50)
SET @count= '0 '
Label:
SELECT @pid=parentid
FROM category
WHERE categoryid=@id
WHILE EXISTS(SELECT 1 FROM category WHERE categoryid=@id)
BEGIN
SET @count=@count+CAST(@id AS VARCHAR(5))
SET @id=@pid
GOTO Label
END

SET @count= CAST(CAST(@count AS INT) AS VARCHAR(50))
SELECT *
FROM category
WHERE CHARINDEX(CAST(categoryid AS VARCHAR(5)),@count) <> 0


EXEC proc_catetory 7


categoryid categoryname parentid
----------- -------------------- -----------
1 新闻 0
3 国内 1
5 广东 3
7 广州 5


热点排行