SQL SERVER 2005中怎么实现树型数据?
我有一个表,
角色ID | 角色名 | 父角色ID
001 Role1
002 Role2 001
003 Role3 002
004 Role4 003
现在我要查询Role4 , 找到所有它的父角色 ? 先谢谢了.
------解决方案--------------------CREATE TABLE T (
角色ID VARCHAR(20),
角色名 VARCHAR(20),
父角色ID VARCHAR(20)
)
INSERT INTO T
SELECT '001','Role1',NULL UNION ALL
SELECT '002','Role2','001' UNION ALL
SELECT '003','Role3','002' UNION ALL
SELECT '004','Role4','003'
GO
CREATE FUNCTION F_TREE(@name VARCHAR(20))
RETURNS @t TABLE(角色ID VARCHAR(20),
角色名 VARCHAR(20),
父角色ID VARCHAR(20),
[Level] INT
)
AS
BEGIN
DECLARE @i INT
SET @i = 0
INSERT INTO @t
SELECT *,@i FROM T WHERE 角色名 = @Name
WHILE @@ROWCOUNT <> 0
BEGIN
SET @i = @i + 1
INSERT INTO @t
SELECT B.角色ID, B.角色名,B.父角色ID,@i FROM @t A, t B WHERE A.父角色ID = B.角色ID AND A.[Level] = @i - 1
END
RETURN
END
GO
SELECT 角色ID, 角色名,父角色ID FROM dbo.F_TREE('Role4') WHERE LEVEL<> 0 ORDER BY level DESC
DROP FUNCTION F_TREE
DROP TABLE T
角色ID 角色名 父角色ID
-------------------- -------------------- --------------------
001 Role1 NULL
002 Role2 001
003 Role3 002
(所影响的行数为 3 行)