【问题标题】:SQL: Finding the Lowest Common Ancestor of hierarchyidsSQL:查找hierarchyid的最低共同祖先
【发布时间】:2012-06-20 12:53:08
【问题描述】:

我有一个数据集,其中包含(除其他外)值 hierarchyids 和 Parent-hierarchyids。 对于另一个查询,我需要hierarchyids 的最低共同祖先,因为我对sql 和特别是hierarchyids 相当陌生。

ID          HID         ParentHID
1           0x5CB280    0x5CA0
2           0x5CABBB08  0x5CABBA
3           0x5CB270    0x5CA0

【问题讨论】:

  • 最低的共同祖先是什么?请提供您的要求和数据集的示例:您是否有两个字段,一个是 id,一个是记录的父 id?
  • 做了一些修改,希望现在更容易理解
  • 是 Microsoft SQL 吗?如果是,我有一个显示答案的文档链接,但如果我不确定您使用的 SQL Server,我不想发布它! :)
  • 哇,是的,它的 Microsoft SQL。如果您能提供链接,我将不胜感激
  • 好吧,我不会将其作为答案发布,因为它需要解决,但这是技术链接:technet.microsoft.com/en-us/library/bb677173.aspx 这描述了主要的hierarchyid API 以及如何使用 DLL 查找 LCA在 C# 中。我正在尝试找到一些准备就绪且简单的东西,如果可以的话,我会发布答案,敬请期待! :D

标签: sql sql-server parent hierarchyid ancestor


【解决方案1】:

假设您的层次结构没有严重平衡偏斜(例如列表),获取祖先链很便宜。接下来,你要做的就是取两条祖先链,做集合交集,然后找到一个最长的层次结构id。

【讨论】:

    猜你喜欢
    • 2014-05-24
    • 1970-01-01
    • 2017-07-28
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    相关资源
    最近更新 更多