【发布时间】:2011-02-12 19:56:45
【问题描述】:
我有一个像 records(ID, ParentID) 这样的表格,其中包含这些数据:
ID ParentID
1 null
2 1
3 2
4 2
5 3
6 null
7 6
如果将这张表绘制成一个家族的层次结构,1,2,3,4,5 将相互关联。
我想找到一种方法来传递一个 ID(如 3),以便它给我其他家庭成员。我正在使用 C# 和 SQL,两者都可以 - 我想找到这样的结果:
3 - result 1,2,4,5
2 - result 1,3,4,5
6 - result 7
and so on
我想找到我传入的 ID 的父母、祖父母、孩子和孙子女(如我的示例中)。
【问题讨论】:
-
实际数据有多深? CTE 可以完成这项工作......不过,当我不得不这样做时,我刚刚手动创建了一个节点树(作为表),允许我通过
BETWEEN进行查询 -
数据的深度可能是3级或4级
-
您有两行 ID=3 吗?那么我假设 ID 不是唯一的或识别的吗?
-
测试数据是否代表整个数据集?例如,可能有一些 ID 存在于 ParentID 中但不存在于 ID 中(例如 5)。此外,ID 2 的测试用例与您要查找的内容的描述不匹配。 ID 2 有父 1 和子 3,但 3 没有子,所以根据描述的结果应该只是 1,3,不是吗?
-
对不起“Daniel Renshaw”,我编辑了我的问题,你是对的,现在我希望它变得清晰
标签: c# sql sql-server stored-procedures function