SQL Server中的同桌树表查询

时间:2014-01-23 01:13:34

标签: sql recursion tree common-table-expression

我搜索过,但没有找到任何可能有用的东西。

我在SQL Server 2005数据库中有以下表格:

Parent     Child             Value
----       --------          ---------
America    Mexico            8
America    Canada            1
Asia       Japan             5
Asia       Korea             7
Europe     Spain             0
Europe     Italy             2
Africa     Zimbabwe          1
Mexico     Baja California   0
America    USA               3
USA        California        1
USA        Texas             2

父级和子级是主键,值并不重要(IMO)。我想创建一个结果如下的视图:

Parent     Child             Value
----       --------          ---------
America    USA               3
USA        California        1
USA        Texas             2

我会搜索美国,结果将以递归的方式回馈每个嵌套的孩子,无论它有多少,因为我可以包括城市,地方等。

我需要的是类似于有人称之为BOM爆炸的内容。

1 个答案:

答案 0 :(得分:0)

以下是如何做到这一点:

with cte as (
       select parent, child
       from t
       union all
       select cte.parent, t.child
       from cte join
            t
            on cte.child = t.parent
     )
select cte.*
from cte
where parent = 'America';

Here是一个小的SQL小提琴示例。