当前位置: 首页 > 面试题库 >

具有字符串路径的分层数据-查询节点,获取其节点的所有父级和第一级

皮煜
2023-03-14
问题内容

说我有树数据:

- A        A
-  A0      A/A0
-   A0.0   A/A0/A0.0
-   A0.1   A/A0/A0.1
-  A1      A/A1
-   A1.0   A/A1/A1.0
-   A1.1   A/A1/A1.1
-  A2      A/A2

它存储在postgresql数据库“ tree-data”中,其中的“ id”列是节点的路径,如上,还有一些辅助列,例如“
depth”(整数,表示树中节点的深度),“ terminal” ‘(布尔值,是叶节点,没有子代)。

我现在想要实现的是查询“ A / A0 / A0.0”,该查询将检索所有父母及其第一级孩子。

让所有父母都容易:

SELECT name, id, depth, terminal
     FROM "tree-data"
     WHERE 'A/A0/A0.0' LIKE id||'%'
     ORDER BY id;

这将返回以下节点:

A
A/A0
A/A0/A0.0

但这就是我所需要的:

A
A/A0
A/A0/A0.0
A/A0/A0.1
A/A1
A/A2

您能想到一种简单有效的方法来实现这一目标吗?优化/修改模式是可能的,尽管不是首选方法。


问题答案:

您可以使用来获取父项regexp_replace(),然后使用与您相同的逻辑

SELECT name, id, depth, terminal
FROM "tree-data"
WHERE 'A/A0/A0.0' LIKE regexp_replace(id, '/[^/]+$', '') || '%'
ORDER BY id;


 类似资料:
  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 我的mySQL数据库中有如下表: 对于谓词,它将具有如下树视图: 我想创建一个可以选择起始节点并为此获得所有父节点的表单。例如,通过选择我想要获得: 步骤2: 有什么方法可以使用以下简单文本来打印此节点: 问题答案: 您的数据可以在RDF中表

  • 本文向大家介绍php获取json数据所有的节点路径,包括了php获取json数据所有的节点路径的使用技巧和注意事项,需要的朋友参考一下 之前我们讲解过使用javascript获取json数据节点路径的问题,今天我们更进一步,讲解下php获取json数据所有的节点路径 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我有一棵看起来像上面的树,由一个链接结构表示: 我的目标是找到从根节点到叶节点的所有路径。 我的树遍历算法如下所示: 当我运行它时,我确信树正在按图所示构建。我已经测试过了。然而,我无法找出我的树遍历分割错误的原因。 我得到的输出是: 我已经在高度较小的树上测试了它,它是有效的。但是出于某种原因,它不适用于高度大于2的树。我认为这是树出了问题,我检查并打印了每个父级、左子级和右子级,它们打印出来如

  • 问题内容: 我正在尝试并寻找 从 Oracle 11g数据库中的层级查询中 从节点获取所有最后一级子级(叶子)的方法 。 我有2个表:“节点”(具有各自值的所有节点的列表)和“关系”,它们指定父子关系: -节点- - 关系 - 我已经阅读了有关CONNECT_BY_ISLEAF的信息,如果它是叶子则返回1,但是我无法像Oracle示例一样查询CONNECT_BY_ISLEAF,但我没有得到任何结果

  • 在C#中,我发现了一个非常可爱的方法,它允许您从指定的控件中获取所有后代及其所有后代。 我正在寻找一种类似的JavaFX方法。 我看到<code>Parent</code>类是我想要使用的,因为它是派生所有节点类的子类。 这就是我到目前为止所拥有的(我还没有在谷歌上找到任何像“JavaFX从场景中获取所有节点”这样的搜索): 那么,如何判断N是否是父级(或从父级扩展)?我这样做对吗?它似乎不起作用

  • 我有一个XML文档,它包含一个非常复杂(对我来说)的结构,没有换行符。它有许多具有类似结构的元素: 我需要得到节点值的文本,这是节点成员的孩子也有孩子的名字与特定的文本(在这种情况下virtual_size)。也有可能存在几个类似的节点。我可以用[1]etc吗? 这让我知道了节点的名称,但是如何达到“值”节点呢?