查找分层数据的所有祖先

问题描述

我下面的表格帽子包含具有层次结构的数据结构

+----+----------+-------------+
| ID | ParentID |  FullPath   |
+----+----------+-------------+
|  1 | NULL     | (1)         |
|  2 | 1        | (1)/(2)     |
|  3 | 2        | (1)/(2)/(3) |
|  4 | NULL     | (4)         |
|  5 | 4        | (4)/(5)     |
|  6 | 4        | (4)/(6)     |
|  7 | 6        | (4)/(6)/(7) |
+----+----------+-------------+

如何检索某项的祖先? 例如,如果我寻找ID 3的祖先,我将得到1和2。 同样,如果我要查找7,我将得到4和6(注意5不在)。

我知道我可以通过解析列和使用动态SQL来避免在FullPath中使用CTE,但是我在创建查询时遇到了困难。

编辑: 我想要一个查询,使我能够获得项目的每个祖先行。例如,如果我希望祖先为7,则查询将返回下表:

+----+----------+-------------+
| ID | ParentID |  FullPath   |
+----+----------+-------------+
|  4 | NULL     | (4)         |
|  6 | 4        | (4)/(6)     |
+----+----------+-------------+

原因是因为我有更多描述项目的列,所以我需要获取它们并进行比较。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)