我有一个分层的树表结构,.How,我可以得到左树和右树。
1 a NULL
2 b 1
3 c 1
4 d 2
5 e 2
6 f 3
7 g 3
8 h 4
9 i 4
10 j 5
11 k 5
12 l 6 如果我有a的id,ie 1 .how,我能得到b和c的树吗?
我期待着b下面的树
2 b
4 d
5 e
8 h
9 i
10 j
11 k 在这里,我只使用了一个邻接模型,我要去.I,而不是寻找嵌套模型.这是一个重复的问题。
发布于 2009-07-27 11:37:32
这将返回父级%1的树结构
DECLARE @Table TABLE(
ID INT,
Val VARCHAR(MAX),
ParentID INT
)
INSERT INTO @Table (ID,Val,ParentID) SELECT 1, 'a', NULL
INSERT INTO @Table (ID,Val,ParentID) SELECT 2, 'b', 1
INSERT INTO @Table (ID,Val,ParentID) SELECT 3, 'c', 1
INSERT INTO @Table (ID,Val,ParentID) SELECT 4, 'd', 2
INSERT INTO @Table (ID,Val,ParentID) SELECT 5, 'e', 2
INSERT INTO @Table (ID,Val,ParentID) SELECT 6, 'f', 3
INSERT INTO @Table (ID,Val,ParentID) SELECT 7, 'g', 3
INSERT INTO @Table (ID,Val,ParentID) SELECT 8, 'h', 4
INSERT INTO @Table (ID,Val,ParentID) SELECT 9, 'i', 4
INSERT INTO @Table (ID,Val,ParentID) SELECT 10, 'j', 5
INSERT INTO @Table (ID,Val,ParentID) SELECT 11, 'k', 5
INSERT INTO @Table (ID,Val,ParentID) SELECT 12, 'l', 6
DECLARE @ParentID INT
SET @ParentID = 1
;WITH TreeSelect AS(
SELECT ID,
Val
FROM @Table
WHERE ParentID = @ParentID
UNION ALL
SELECT t.ID,
t.Val
FROM @Table t INNER JOIN
TreeSelect ts ON t.ParentID = ts.ID
)
SELECT *
FROM TreeSelect
OPTION (MAXRECURSION 0)发布于 2009-07-27 11:38:10
我认为你需要的是CTE (常用表表达式)
这种递归CTE可以在here中找到,可以尝试this获得CTE的一般帮助,因为它们倾向于使用不太标准的SQL语法
https://stackoverflow.com/questions/1187627
复制相似问题