CatID parID catName
1 -1 A
2 1 B
3 2 C
4 3 D
我想编写一个以字符串格式返回父子关系的查询。
在上表中,catName有parentId -1,这表示它没有父节点。 B具有parentID 1,这意味着A是其父级。
所以最后字符串是这样的
A=>B=>c=>D
这是我想要生成查询的方式。
我将传递CatID,它将遍历,直到它变为-1。
答案 0 :(得分:3)
declare @CatID int;
set @CatID = 4;
with C as
(
select parID,
cast(catName as varchar(max)) as catName
from YourTable
where CatID = @CatID
union all
select T.parID,
T.catName + '=>' + C.catName
from YourTable as T
inner join C
on T.CatID = C.parID
)
select catName
from C
where parID = -1
答案 1 :(得分:1)
作为部分答案,听起来您需要递归查询。 Here是一个StackOverflow线程,提供有关递归查询的一些好信息。至于如何使用查询将其转换为单个字符串,我不知道......该部分可能更适合编程语言。
答案 2 :(得分:1)
你需要定义函数然后在递归循环中调用它。
您可以使用MPTT (Modified Preorder Tree Traversal)存储嵌套树或分层数据。
this article描述了如何在单个查询中获得分层“breadcrumb”。