问题标签 [hierarchical-query]

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.

0 投票
1 回答
247 浏览

oracle - Oracle 同级结构

我有一个在数据库表中存储相等记录的结构。你可以认为这些记录是兄弟。例如我在这张表中有两条记录;1=2 和 1=3。我需要一个查询来返回给定记录的所有兄弟姐妹。让我举个例子;

这是我的表,有两列:

我有 2 条记录,1=2 和 1=3

我认为使用 connect by 是这种情况的最佳解决方案,并编写以下查询:

此查询返回正确的结果,返回两行。

如果我使用 2 作为参数,查询也会正确运行,再次返回两行。

但是如果我使用 3 作为参数,查询不会像我预期的那样运行,只返回起始行。

我想知道为什么 2 和 3 的结果不同。任何帮助或想法都会被应用。

谢谢。

0 投票
0 回答
1177 浏览

java - 如何在休眠中实现`connect by prior`?

这是我在 oracle 中的查询,但我想用 hibernate 作为一个Generic函数来实现它,它将在整个应用程序中使用。然后我google了一下,发现hibernate不支持这种类型的查询。

笔记

  1. 我不想使用命名查询。
  2. 我是冬眠的初学者
0 投票
1 回答
7329 浏览

postgresql - 如何使用递归查询向后遍历分层树结构结构

我正在使用 PostgreSQL 9.1 来查询分层树结构数据,这些数据由连接到节点的边(或元素)组成。这些数据实际上是针对流网络的,但我已将问题抽象为简单的数据类型。考虑示例tree表。每条边都有长度和面积属性,用于从网络中确定一些有用的指标。

如下图所示,其中由 AE 表示的边与节点 1-5 相连。NULL to_node(Ø) 表示结束节点。总是独一无二的from_node,所以它可以充当PK。如果这个网络像流域一样流动,它将是从上到下的,其中起始支流边缘是 A、B、C,结束流出边缘是 E。

树

文档为WITH如何在递归查询中使用搜索图提供了一个很好的示例。因此,要获取“转发”信息,查询从末尾开始,并向后工作:

以上是有道理的,并且适用于大型网络。例如,我可以看到B边缘距离末端有 3 条边,而前向路径{B,D,E}从末端到末端的总长度为 3.5。

但是,我想不出构建反向查询的好方法。也就是说,从每条边来看,累积的“上游”边、长度和面积是多少。使用WITH RECURSIVE,我拥有的最好的是:

我想在递归查询的第二项中构建聚合,因为每个下游边缘都连接到 1 个或许多上游边缘,但是递归查询不允许聚合。另外,我知道连接是草率的,因为with recursive结果有多个连接条件edge

反向/反向查询的预期结果是:

如何编写此更新查询?

请注意,我最终更关心的是累积准确的长度和面积总数,并且路径属性用于调试。在我的实际案例中,前向路径多达几百条,我预计大型复杂流域的反向路径有数万条。

0 投票
2 回答
958 浏览

sql - 使用 Connect by 获取树中最顶层的部分

我有下表:

A是父母,B是孩子。

我想在查询中输入子值“E”和“F”,并且只为这两个应该是“A”的那些获得顶级父级。这是我正在使用的查询:

它返回以下内容:

为什么它没有返回正确的顶级父级?

0 投票
1 回答
838 浏览

php - SQL树结构父子

我有以下数据:

我正在查询电话簿 ID 及其所有父母。它应该是一个导致编辑器的层次结构,因为他的父级为空,并且他通过打印机连接,打印机通过 TextWritingProggie 连接,然后连接到电话簿。

我想使用 SQL 更可取,但它可能需要通过 PHP 处理。

这是我到目前为止所得到的,但它在不包含 TextWritingProggie 的记录之后停止

任何帮助都会很棒

0 投票
1 回答
145 浏览

sql - 具有一对多关系的分层查询

我有三张桌子;d_algorithme

d_algo_ope

最后d_algo_maj

我想创建一个查询,给出如下结果:

其中前两列来自d_algorithme,并且has_maj是 0 或 1,具体取决于在 中是否存在直接或间接引用的算法d_algo_maj。间接引用是通过一个或多个d_algo_ope记录,它们一起形成一个层次结构。

对于显示的示例数据:

  • 300:没有算法或d_algo_ope记录,id_algo = 1也没有d_algo_maj记录id_algo = 300
  • 301:有一条d_algo_maj记录id_algo = 301(足以使has_maj列设置为1)。
  • 302:没有d_algo_maj记录id_algo = 302。但是有一个d_algo_ope记录,num_operation = 301id_algo = 302意味着 302 算法引用 301 算法(它有 a maj),因此该has_maj列应设置为 1。

这是 DDL 和 DML 以及其他详细信息(根据我的实际情况进行了简化):

0 投票
2 回答
141 浏览

sql - 如何在自循环表中导航?

考虑下表

这是一个自循环表,即每个员工都有一个经理,除了根。

我想在这个表上运行以下查询:

发现所有员工的薪水都高于他们的经理?


附言

结构中只有一个根

考虑以下查询

结果将是这样的:

我做了以下查询

从下到上为员工表中的每个员工创建一个子树,但我不知道如何导航以获得所需的结果!

0 投票
2 回答
2718 浏览

sql - 从单个表 oracle 中查找分层或父子列值

我有一个表名,它有两列,一列是p,第二列是ch

我想要的输出是所有链接到父母的孩子。例如,如果我给“1”作为输入,我必须找到所有父元素和子元素,在这种情况下,1 是 2、3、4 的父元素,2 是 5 的父元素,依此类推......在这种情况下,我需要每个链接的子元素和父元素本身,如下所述:

下面是我写的查询,我想确认它是最好的解决方案,或者我们可以做得更好,因为我的表中有大量数据:

0 投票
1 回答
109 浏览

sql - 分层查询/基于表输入

账户表:

信息表:

产品表:

帐户表包含帐户的 ID。但是一些账户(ID_ACC)有父账户(Parent_acc) - 这个例子展示了

具有相同的 parent_acc (76543)。

一些孩子有信息(信息表)

(本例显示1825234456与 info table 连接)

接下来,一些 info.account_id 包含产品(产品表)(在此示例中 - 只有18252 accountid 的产品具有帐号:456452。)

我想选择所有帐户层次结构:

(对我来说)最难的事情是我需要基于表格(展示)。如果to_show表由例如填充。34456 然后帐户输出需要与上面的列表相同。

如果 to_show 表由例如填充。“76543,18252,34456”然后情况与上述相同,依此类推......

我所需要的只是呈现所有层次结构,无论哪个帐户(在产品表或信息或帐户中)在 to_show 表中......作为输入,我可以从产品表中获取子/父或帐户。我试图这样做,但不幸的是这对我来说太难了(因为我在层次结构查询中完全是新手......)。伙计们,你能帮帮我吗?

0 投票
0 回答
72 浏览

mysql - 查找 SQL 表中的所有关系 - Mysql

我有一个名为实体关系的表。它将受赠者映射到其角色。在某种程度上一个用户可以有多个角色,一个角色也可以有多个角色,举个小例子:

现在我想创建 SQL 查询来查找实体的所有可能关系。例如上面的:

我知道一种通过递归在 Java 中执行此操作的方法,但在我看来,如果有一种通过查询执行此操作的有效方法,它会快得多。

有什么好的方法吗?
它会比Java递归实现更快吗?

谢谢。