自引用获取所有链接的记录父级&;小孩

本文关键字:amp 小孩 记录 获取 链接 自引用 | 更新日期: 2023-09-27 18:26:50

我想使用实体框架从自引用表中选择所有相关记录。我没有任何具体的级别。它只适用于所有相关记录,所有子记录和所有父记录。以下是一些示例数据。因此,如果我将ID 5传递给函数,它应该会给我ID为1,4,5,7,8的记录。

5是id 7的父id,7是id 8的父id。类似地,5的父id是1,1也是id 4的父id。

因此,通过这种方式,我想选择Id为5的所有下面和上面的记录。

数据源

Id  Name    ParentId
1   Test 1  NULL
2   Test 2  NULL
3   Test 3  NULL
4   Test 4  1
5   Test 5  1
6   Test 6  4
7   Test 7  5
8   Test 7  7

预期

1   Test 1  NULL
4   Test 4  1
5   Test 5  1
7   Test 7  5
8   Test 7  7

自引用获取所有链接的记录父级&;小孩

我得到了逻辑。我们需要首先识别根节点,然后从根节点中找到链接的家谱。我们可以编写一个CTE来查找根节点,也可以添加一个新列来保留根节点id。带有根节点的Sql Fiddle