我有简单的查询
WITH conn_cte ( ParentCategoryId, CategoryId, IdsPath )
AS ( SELECT ParentCategoryId
,CategoryId
,CAST(ParentCategoryId AS varchar(1000))
FROM Ind_CategoriesConnections
WHERE ParentCategoryId = 0
UNION ALL
SELECT cc.ParentCategoryId
,cc.CategoryId
,CAST(IdsPath + ','
+ CAST (cc.ParentCategoryId AS varchar(5)) AS varchar(1000))
FROM Ind_CategoriesConnections AS cc
INNER JOIN conn_cte AS conn ON conn.CategoryId = cc.ParentCategoryId
AND cc.categoryid NOT IN (
SELECT conn.Categoryid )
)
SELECT x.*
FROM ( SELECT t.ParentCategoryId
,t.CategoryId
,t.IdsPath + ',' + CAST(t.CategoryId AS varchar(5)) AS [path]
FROM conn_cte t
INNER JOIN Ind_Categories c ON t.CategoryId = c.CategoryId
AND c.CategoryViewId = 1
AND c.IsActiveYN = 1
) x
ORDER BY x.path
我对只返回从根到叶的完整路径的查询(最佳)很感兴趣。
例如结果的一部分是
Parent Child Path
12 16 0,8,12,16
16 17 0,8,12,16,17
17 18 0,8,12,16,17,18
17 19 0,8,12,16,17,19
零是根 18,19 是叶子(和孩子),我想部分忽略像0,8,12,16
和这样的路径0,8,12,16,17
,只得到完整的路径(以叶子结尾)
0,8,12,16,17,18
和0,8,12,16,17,19