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)
| 归档时间: |
|
| 查看次数: |
33492 次 |
| 最近记录: |