您的位置:首页 > 数据库

Sql Server树结构表,根据子节点获取根节点,支持无限级分层

2011-01-07 12:48 288 查看
一张树结构的表,如何从一个子节点,获取到这个子节点的根节点?

表结构如下



说明:

CategoryID 是节点编号;

CategoryName 是节点名称;

ParentCategoryID 是节点的父节点的编号;

测试数据如下



测试用例

已知节点ID是7,求它的根节点。(从上图,我们可以看到,结果应该是 2)

下面,给出实现SQL,一个存储过程,函数也可以

CREATE PROCEDURE GetRootCategoryID
(
@nodeID INT
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @rootID INT, @currentID INT

SELECT @rootID = ParentCategoryID, @currentID = @nodeID FROM test2 WHERE CategoryID = @nodeID;
WHILE @rootID > 0
BEGIN
SELECT @rootID = ParentCategoryID, @currentID = CategoryID FROM test2 WHERE CategoryID = @rootID;
END

RETURN @currentID;
END


执行的语句:

DECLARE	@return_value int

EXEC	@return_value = [dbo].[GetRootCategoryID]
@nodeID = 7

SELECT	'Return Value' = @return_value
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 数据库 休闲