任何人都可以建议我如何获得特定树的所有孩子的身份。
表格结构:
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
答案 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