问题标签 [ltree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - Postgres 中的 LTREE 祖先查询对于大型数据集无法正常工作
我已经在 Azure Postgresql 数据库中安装了 ltree 扩展,创建了一个包含以下内容的表
使用以下语句创建了发布的要点索引
下面的示例数据
我在数据库中有大约 80,000 条记录。问题在于下面的查询。
我期待以下回应
相反,我收到以下回复
当我在数据库中有大约 80,000 条记录时,有人可以告诉我为什么获取祖先的查询失败了吗?当我的记录较少(比如 20 或 30)时,同样的查询可以正常工作(返回祖先记录)。
json - 选择行并使用 ltree 将所述行的子代作为列
“内容”表有一个列“ltree” - 内容项是使用基于此 ltree 的层次结构创建的。
例如:
标题 | 长树 |
---|---|
记录 1 | 1 |
记录 2 | 1.2 |
记录 3 | 1.2.3 |
我正在尝试做的是创建一个 SELECT 语句,在该语句中我收到记录子项的嵌套响应:
标题 | 孩子们 |
---|---|
记录 1 | {记录 2,{记录 3,{}}} |
目标是检索不同数量的“顶级”记录,以及通过 LTREE 分配给该顶级记录的嵌套子项
我尝试过:
这将为我提供
标题 | 孩子们 |
---|---|
记录 1 | {记录 2} |
记录 2 | {记录 3} |
记录 3 | {} |
但是,这只会为我提供“1 层深”的响应,我还没有找到一种方法来继续嵌套响应 - 如果可能的话 - 然后从上面的选择中删除记录 2 和记录 3它存在于嵌套记录之一中。
任何建议都非常感谢 - 当谈到 psql/sql 时,我并不完全在我的元素中。
postgresql - 如何使用 PostgreSQL 在分层任务树中找到平均进度(每级)?
我正在尝试确定任务树中每个任务组的平均进度。问题是只有叶节点(位于不同的表 - 子表 -)实际上具有进度字段。
我有一个任务(父)表和一个活动(子)表。他们两个共享ID。我应该指出我在我的数据库中使用ltree扩展。
我正在尝试制作一个显示整个树和每个节点级别平均进度的列的视图。我必须从最内层开始计算并在树结构中建立自己的方式,但我似乎无法做到正确。
我尝试使用递归 CTE和窗口函数来解决这个问题,但无济于事。Postgres 不允许在递归 cte的递归项中使用聚合函数,所以这不起作用。
这些是我的表(简化):
编辑
这是截至目前的视图的屏幕截图。我能够获得所有叶节点的平均进度,但这并不是我所需要的。应该为树中的每个级别计算平均进度,然后在节点层次结构中向上构建它。
对此的任何见解将不胜感激。提前致谢。
sql - 从树子路径列表中查找完整路径
有没有一种简单的方法可以找到完整路径并为具有这种数据结构的所有主题更新它。
- 初始数据:
CREATE TABLE topics (id varchar, path ltree);
- 预期结果:
postgresql - 带有本机查询 Java Entity Manager 的 Postgres Ltree 扩展
我正在尝试使用本机查询从 postgres DB 中获取树,下一个查询使用 psql 终端可以正常工作:
但是当我使用实体管理器添加相同的查询时:
我收到下一个错误:
我有一些我错过的东西......也许更新postgresql jar?
该项目是spring boot 2.4.2
postgresql - Can't use ltree data type in postgresql
According to https://dzone.com/articles/installing-the-postgres-ltree-extension, ltree is installed and enabled on my computer. But when I try to make a table with a column of type ltree
in Postbird, it says 'type "ltree" does not exist'. This makes no sense. Please help.
postgresql - Postgres 使用 LTREE 选择最大不同层次结构
我正在使用 LTREE 存储员工“报告链”的数据层次结构,并且只想选择具有最深层次结构的行。
例子:
'Frank' 在 office_a 和 office_b 工作。他在 office_a 中向“直销”报告,在 office_b 中向“营销”报告。
我只想显示他在每个办公室报告的“最深”链。所以预期的输出是:
(没有选择第 1 行和第 2 行,因为它们已经被该“报告链”中最深的层次结构所覆盖。
我相信我应该使用类似的东西
但无法完全弄清楚。
我将不胜感激任何指导。
我用来测试的架构:
sql - 如何检查一个节点是否在 ltree 中重复 - PostgreSQL
如何检查一个节点是否在 ltree 中重复(退出多个)?
像这样的东西:
sql - Postgres Ltree - 查询所有给定名称的所有祖先
我还没有找到一种方法来格式化它,让它做我想做的事。
有问题的表有一个“路径”字段,可能包含:
以及一个“名称”字段,对于上面的示例,它将包含
所以它只是路径中的最终名称。
如果我有一个名称列表(如果这需要工作,当然可以将其子查询到路径中)我怎么能运行一个查询来返回(dsitinct)我提供的每个名称的条目?
为了澄清让我们说我正在提供:
这些名称的路径可能是:
我想要的结果是每个祖先名称的定义(理想情况下包括我给它的开头):
我以为我开始使用以下方法到达某个地方:
但是,这仅返回连接 ltree 查询中第一个匹配项的结果。
sql - 如何使用子查询在 Postgresql ltree 中获取后代?
我想在 postgresql 中获取 2 级后代。下面的 Query 工作正常,它正在返回 Path = '103' 的下一级后代
但是问题是我没有 where 条件的路径值。我有代码值,我需要从该代码值获取路径,然后返回下一个 2 级后代。
我尝试使用以下查询,但这给出了语法错误
有没有办法使用子查询来获取路径