问题:我可以修改查询来显示导航路径吗?

文章作者 100test 发表时间 2007:03:13 21:54:49
来源 100Test.Com百考试题网


  我在Common Table Expression上看到你的文章,上面有个递归的查询。我如何修改这个查询,以不同的格式显示从树上下到每个返回到结果集中的节点的路径?例如,如果数据是:

ID ParentId
A null
B A
C A
D B
E C

  我想要查询返回的结果是:

ID Level Path
A 1 A
B 2 A.B
C 2 A.C
D 3 A.B.D
E 3 A.B.C

  专家回答:

CREATE TABLE #x
(
ID CHAR(1),
ParentID CHAR(1)
)

INSERT #x (ID, ParentID)
SELECT A, NULL
UNION ALL
SELECT B, A
UNION ALL
SELECT C, A
UNION ALL
SELECT D, B
UNION ALL
SELECT E, C

.WITH FullPath AS
(
SELECT
ID,
1 AS Level,
CONVERT(VARCHAR(MAX), ID) AS Path
FROM #x
WHERE ParentID IS NULL

UNION ALL

SELECT
x.ID,
FP.Level 1 AS Level,
FP.Path . x.ID AS Path
FROM #x AS x
JOIN FullPath FP ON x.ParentID = FP.ID
)
SELECT *
FROM FullPath



相关文章


为Windows2003认证做准备:十大学习主题
问题:在SQLServer查询中使用DISTINCT
问题:我可以修改查询来显示导航路径吗?
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛