首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询时需要帮助吗?

查询时需要帮助吗?
EN

Stack Overflow用户
提问于 2009-07-27 11:20:28
回答 2查看 99关注 0票数 0

我有一个分层的树表结构,.How,我可以得到左树和右树。

代码语言:javascript
复制
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下面的树

代码语言:javascript
复制
2   b   
4   d   
5   e   
8   h   
9   i   
10  j   
11  k   

在这里,我只使用了一个邻接模型,我要去.I,而不是寻找嵌套模型.这是一个重复的问题。

EN

回答 2

Stack Overflow用户

发布于 2009-07-27 11:37:32

这将返回父级%1的树结构

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2009-07-27 11:38:10

我认为你需要的是CTE (常用表表达式)

这种递归CTE可以在here中找到,可以尝试this获得CTE的一般帮助,因为它们倾向于使用不太标准的SQL语法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1187627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档