是否有可能一个参数传递到的CTE选择节点然后选择它的父到根,其中parentId
为空?SQL Server的CTE选择单树枝结构高达根
在我的代码下面,如果我传入一个参数,选择雨衣,然后递归上树到男士穿其parentId
为空,并选择该分支中的所有节点,包括儿童。请有人可以帮我解决这个问题。我的例子只是递归,显示深度
SQL例如:
DECLARE @Department TABLE
(
Id INT NOT NULL,
Name varchar(50) NOT NULL,
ParentId int NULL
)
INSERT INTO @Department SELECT 1, 'Toys', null
INSERT INTO @Department SELECT 2, 'Computers', null
INSERT INTO @Department SELECT 3, 'Consoles', 2
INSERT INTO @Department SELECT 4, 'PlayStation 3', 3
INSERT INTO @Department SELECT 5, 'Xbox 360', 2
INSERT INTO @Department SELECT 6, 'Games', 1
INSERT INTO @Department SELECT 7, 'Puzzles', 6
INSERT INTO @Department SELECT 8, 'Mens Wear', null
INSERT INTO @Department SELECT 9, 'Mens Clothing', 8
INSERT INTO @Department SELECT 10, 'Jackets', 9
INSERT INTO @Department SELECT 11, 'Rain Coats', 10
;WITH c
AS
(
SELECT Id, Name,1 AS Depth
FROM @Department
WHERE ParentId is null
UNION ALL
SELECT t.Id, t.Name, c.Depth + 1 AS 'Level'
FROM @Department T
JOIN c ON t.ParentId = c.Id
)
SELECT * FROM c WHERE c.Id = 3
什么是您目前的查询和输出你想要什么?我不明白你想要的东西还没有在那个查询中。 – 2011-12-22 09:42:28
我想在其选择的节点的参数传递,然后遍历了树,以它的根在该分支与所有的孩子 – ONYX 2011-12-22 09:44:11
所以,如果我选择雨衣我想要的程序去向上和选择所有家长到该节点高达意味着在父母为零的情况下佩戴,因此这将包括所有孩子都有意义 – ONYX 2011-12-22 09:46:54