用于获取树中所有元素的id的SQL查询

时间:2014-06-09 14:53:26

标签: mysql sql tree

任何人都可以建议我如何获得特定树的所有孩子的身份。

表格结构:

Table 1 : customer                         Table 2 : hierarchy
cId     hId                                hId            cId
1       1                                  1              null
2       2                                  2              null
3       3                                  3                2
4       4                                  4                3
5       5                                  5                2
6       6                                  6                5
7       7                                  7                7

表(Customer)是主要元素,表层次结构仅维护客户的层次结构。

我已将cId 2作为root客户(父级)。现在我必须得到cId(给定)的孩子的所有cId 2

上述方案的预期结果将是2,3,4,5,6(已经给出了2个,并且这些ID设置为客户ID)。这是查询应返回的实际答案。

我查找了递归查询,过程和加入,但我无法得到这个结果。

适用于Mysql,postgresql和sql server

1 个答案:

答案 0 :(得分:1)

您可以使用CTE(公用表表达式)对SQL Server使用递归查询。

语法如下:

WITH CTE
AS
(
    SELECT ID FROM HIERARCHY where ID =2
    UNION ALL
    SELECT ID FROM HIERARCHY child
    INNER JOIN CTE parent on child.parentid=parent.id
)
SELECT *
FROM CTE

在这里阅读更多相关信息: http://technet.microsoft.com/en-us/library/ms186243(v=sql.105).aspx