问题标签 [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 投票
2 回答
17160 浏览

sql - GROUP BY 子句后的 Oracle CONNECT BY 子句

我刚刚在这里看到了这篇有趣的文章,展示了如何在 Oracle 中使用分层查询和窗口函数wm_concat()进行模拟:group_concat()

虽然,我发现这不是一个可读性很强的解决方案,但它非常有趣,特别是因为子句CONNECT BY .. STARTS WITH出现GROUP BY子句之后。根据规范,这应该是不可能的。我已经使用一个简单的查询进行了尝试,但它确实有效!以下两个查询返回相同的结果:

这是一个未记录的功能吗?或者只是为了方便起见语法冷漠?或者这两种说法是否有微妙的不同?

0 投票
1 回答
228 浏览

sql - 分层查询 - 捕获路径的各个部分

我在 Oracle 11g 中有一个分层查询,可以将所有叶节点从树中取出,而且效果很好。但是,当我遍历我的叶节点时,我需要尝试分别捕获路径的每个部分。有没有办法做到这一点?修改我的查询或第二个查询?

非常感谢任何帮助!

这是我的查询:

所以目前我得到一个输出,如:id,superid,name1,>>name1>>name2>>name3>>name

哪个好。但我试图以某种方式捕获每个节点名称(因为我需要以 XML 格式输出它)。

所以现在我的每个叶节点的 XML 看起来像

我希望能够以某种方式获得看起来像

....或类似的东西,基本上我希望能够将我的树层次结构输出到 XML。

0 投票
2 回答
44313 浏览

sql - 在 Oracle SQL 中连接

假设我们有以下表格

我对以下查询的作用感兴趣

据我了解,此代码从员工中选择empno, manager_idename它从该行开始选择 where empno=1,但无法理解该行的作用:

这是否与以下内容相同:

0 投票
2 回答
7099 浏览

sql - 如何在 Oracle 的分层查询中执行 WHERE-CLAUSE

在 Oracle 分层查询中,应在 oracle 文档中的 Connect-By 运算符说明之后评估 WHERE-CLAUSE。

但是有一些复杂的情况:如果 WHERE-CLAUSE 包含 JOIN 样式的限定,如 oracle 所说,应在 Connect-By 运算符之前评估 Join-Style 限定,而另一个仅引用一个关系的非连接样式将是在 Connect-By 运算符之后进行评估。

那么问题来了:如何将 WHERE-CLAUSE 中的限定条件分为两部分,一是在 Connect-By 算子之前求值,二是在 Connect-By 算子之后求值。

所以,如上图所示,WHERE中的条件,f1=b1 and (b2 = 1 or f1=b2 and b1=1 or f2=b1+1) and f1 is not null,变成了两部分:

一:filter(("B2"=1 OR "B1"=1) AND "F1" IS NOT NULL) --> 连接后评估

另一个:filter("F1"="B2" OR "F2"="B1"+1) 和 access("F1"="B1") --> 在连接前评估为 JOIN-ON

那么,谁能解释一下如何区分 WHERE 子句中的条件,以及如何从 WHERE 子句中形成这两部分在 connect-by 之前或之后应用?

谢谢。

谢谢。

0 投票
2 回答
2436 浏览

php - PostgreSQL 分层,类别树

环境:postgresql-8.4

我正在尝试构建类别树。基本上我期待最终输出,例如:

例如:

表结构为

p>

到目前为止,我已经得到了这个,但没有工作。任何帮助将不胜感激:

来自数据库的样本

0 投票
1 回答
830 浏览

oracle - 如何在 oracle 中使用提交时刷新将分层查询创建为实体化视图

谁能告诉我是否有可能在 oracle 10g 中创建分层查询作为带有 REFRESH ON COMMIT 的物化视图?

我尝试使用 CONNECT_BY 但这不适用于 REFRESH ON COMMIT。

当底层数据发生变化时,是否有其他可能让视图自动刷新?

或者可能有替代 CONNECT_BY 与 REFRESH ON COMMIT 一起使用的替代方法?

在此先感谢您的任何提示或帮助。

0 投票
1 回答
2273 浏览

mysql - 什么是等同于 Oracle 的“开始于...连接”的标准 SQL 查询,但不是特定于 DBMS

我想知道是否有与 Oracle 的分层语法等效的通用 SQL start with...connect by。我需要可以在任何数据库上使用的东西。这是我的意思的那种查询(使用 Oracle 的示例 EMP 表):

递归公用表表达式适用于许多数据库实现,但不适用于 MySQL。

0 投票
1 回答
60 浏览

sql - 如何为分层数据执行 WHERE NOT IN?

我有一个表,它是点之间的路径列表。我想创建一个查询以从给定点返回带有 pointID 和范围(点数)的列表。但是花了一天时间试图解决这个问题,但没有去任何地方,有谁知道应该怎么做?(我正在为 MS-SQL 2005 编写此内容)

例子

0 投票
1 回答
173 浏览

sql - 循环查询(Oracle 10 XE 和 11 XE)

有路线图(连接城市列表):

我需要找到路径:柏林=>罗马=>纽约=>达拉斯

变体 1:

返回:=>罗马=>伦敦

变体 2:

返回:ERROR ORA-01436 CONNECT BY 用户数据循环

任何建议,如何通过分层查询获得预期结果?

0 投票
1 回答
1461 浏览

oracle - PLSQL - 按先验连接(多对多)

我有一个使用 connect by 语句对递归数据进行排序的查询。我遇到的问题是偶尔会有一对多或多对一的关系,我不知道如何处理它。

所以来解释一下。我有一个源列和目标列。大约 99% 的时间,这些都是一个唯一的 ID。不幸的是,另外 1% 的时间在其中一列中有一组 ID。该表是流程图类型工具的平面表示,因此可以有许多输出的拆分和决策,以及可以有许多输入的合并。

为了在为表加载数据时处理这个问题,使用 listagg 函数将唯一 ID 连接在一起。所以我最终得到的目标值类似于“1254143,2356334,6346436,3454363,3462354,442356”。

因此,当我的 connect by 语句被执行时,它会完美运行,直到遇到这些场景之一,此时它会停止(当然这是预期的)。
我想我可能能够以某种方式使用 IN 或 INSTR 来让它工作,但还没有运气,我在网上找不到任何东西。

任何帮助,将不胜感激.....