【发布时间】:2017-05-17 05:24:21
【问题描述】:
我知道这很有挑战性,有没有 sql 专家请帮我解决这个问题。
我有hierarchyID 如下NameHID 列。它分别代表/NameID/dadID/MomID/。这意味着学生的父亲和母亲。我的表名是学生。
这是我的示例NAMEHID 专栏
/2/8/5/
/5/11/12/
/8/7/9/
我需要一个类似的输出
NameID | RecursiveLevel
2 0
5 1
7 2
8 1
9 2
11 2
12 2
从这张图片中你可以看到什么是 RecursiveLevel。这棵树代表特定节点的祖先。
【问题讨论】:
-
那...不是
hierarchyid的用途。 -
我是 sql 新手。这是我的主管要求的任务之一。在这里,我提到了他给我的所有细节。这有什么不对吗?
-
您显示的树自然会在
hierachyid中表示为/2/、/2/8/、/2/8/7/、/2/8/9/等值。这就是它的本意used - 每个 level 都通过在前一个 level 的末尾添加新值来表示。如果您使用该表示,调用GetLevel并获得结果是微不足道的。不幸的是,这不是您正在使用的表示,因此这种数据类型的所有功能现在都将反对获得合理的结果。 -
@Damien_The_Unbeliever 感谢您提供的信息。现在我得到了关于hierachyid的明确信息。我们不能通过将上面的 NAMEHid 列作为主列的样本来完成这项任务吗?
-
正如其他人所建议的那样,您的 HierarchyID 表示和树的图形表示不匹配。哪个是对的?输出似乎与图表匹配。如果是这种情况(即您正在尝试解决的情况),请告诉我,我可以提供帮助。
标签: sql sql-server hierarchyid