在单个SQL查询中查找多个父项的所有子项

Mvd*_*vdD 9 sql sql-server hierarchical-data

假设我有一个父子关系表.

parent  child
1       4
1       5
2       6
3       7
4       8
6       9
7       10
8       11

现在我有一个返回人员列表的查询(例如1和2),我想找到他们所有的孩子,孙子等等(在这种情况下:4,5,6,8,9,11).

我知道我可以使用公共表表达式来递归搜索,但我想知道我是否可以创建一个SQL语句来一次查找所有后代而不必迭代输入集.

编辑:抱歉不够清楚.我正在寻找类似的东西:

SELECT {Hierarchical relation} from table where parent in (1,2)

这应该导致单个输出列的行为4,5,6,8,9,11.

我不再对输出中的关系感兴趣,只是对多个家庭的完整家庭成员感兴趣.

dan*_*era 17

这里是

---- PlainTable ----
parent  idElement (child)
Null    1
1       4
1       5
2       6
3       7
4       8
6       9
7       10
8       11

WITH tableR (parent, idElement)
AS
(
-- Anchor member definition
    SELECT e.parent, e.idElement
    FROM PlainTable AS e   
    WHERE parent in (1,2)
    UNION ALL
-- Recursive member definition
    SELECT e.parent, e.idElement
    FROM PlainTable AS e
    INNER JOIN tableR AS d
        ON e.parent = d.idElement
)
-- Statement that executes the CTE
SELECT idElement
FROM tableR  --inner join to plain table by id if needed
Run Code Online (Sandbox Code Playgroud)