【发布时间】:2012-03-01 22:36:30
【问题描述】:
我有一个结构表:
CompanyID、CompanyName、LinkedCompanyID
以便多个公司可以在一个层次结构中链接
例如
CompanyID, CompanyName, LinkedCompanyID
1 Company A, NULL
2 Company B, 1
3 Company C, 2
4 Company D, 2
5 Company E, 4
6 Company F, 3
7 Company G, NULL
我想要一个查询以返回每个公司的顶级父级
即
CompanyID, CompanyName, ToplevelParentID
1 Company A, NULL (or 1 I don't mind)
2 Company B, 1
3 Company C, 1
4 Company D, 1
5 Company E, 1
6 Company F, 1
7 Company G, NULL (or 7 I don't mind)
我已经研究过使用递归 CTE 表达式,但我能找到的所有示例都返回从父级向下的层次结构列表,而不是最顶层的父级。
任何人都可以提供任何指针或示例查询
【问题讨论】:
-
强烈建议:添加一个跟踪“顶部容器”的字段。我在类似的场景中这样做(并且一些 intetim knwdes 是它们自己的容器 - 例如 CMS:将结构过滤到文档,这是一个容器,然后在文档中构建结构。这会变得容易得多。
标签: sql sql-server tsql common-table-expression