问题标签 [connect-by]

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 投票
3 回答
31998 浏览

sql-server - Oracle 'CONNECT BY PRIOR' 和 'ORDER SIBLINGS BY' 的 SQL Server 等效项

我有这个 Oracle 代码结构,我正在尝试转换为 SQL Server 2008 注意:我在方括号“[]”中使用了通用名称、封闭的列名和表名,并进行了一些格式化以使代码更多可读)

上述代码的 SQL Server 等效模板是什么?

具体来说,我正在努力使用LEVEL和 'ORDER SIBLINGS BY' Oracle 构造。

注意: 上面的“代码”是一组 Oracle 程序的最终输出。基本上,“WHERE”子句是动态构建的,并根据传递的各种参数而变化。以“CONNECT BY PRIOR”开头的代码块是硬编码的。


以供参考:

SQL SERVER 文章中 ORACLE 的 CONNECT BY PRIOR 模拟接近了,但它没有解释如何处理 'LEVEL' 和 'ORDER SIBLINGS' 构造。......我的心变得扭曲了!

相当于:


如果我有一个初始模板可供使用,它将大大有助于我构建 SQL Server 存储过程以构建正确的 T-SQL 语句。

援助将不胜感激。

0 投票
3 回答
9824 浏览

sql - Oracle 排序连接按先验分层

我有一个表,其中定义了父/子关系,但无法通过层次结构进行排序。

由于我不能使用 ORDER SIBLINGS BY 以分层方式进行排序,我将如何以如下的分层方式对其进行排序?

0 投票
2 回答
306 浏览

sql - 如何在连接中获得具有给定 ID 的完整子分支

我想从parent_id = null给定子 ID 的子代中获取分支

结果是元素id 的完整分支:56

如何选择带有选定孩子的分支

例子:

现在结果是:

我想要实现的是给定子ID:57只选择那个分支

0 投票
0 回答
123 浏览

oracle11g - 创建链接序列

想象一下,我有由一个或多个段组成的路径。每条路径都有一个id ,您可以使用它的id检查一个段是否来自路径。每个段都有一个起点和一个终点

问题是这些段没有按开始-结束-开始-结束排序:

分段表:

我真正需要的是对每条路径的段从开始到结束进行排序,并给它序列号,如下表所示:

这就是我想要做的:

我相信我不是到目前为止的解决方案,但我在这里遗漏了一些东西,而不是只有我需要的序列号,我得到了多个重复的序列号,就像它为每个级别创建兄弟姐妹一样序列。

此外,我有来自大约 3k 条路径的大约 4.5k 段,它给了我数百万条记录。

拜托,任何帮助都非常受欢迎。

0 投票
1 回答
1140 浏览

sql - 如何使用 ORACLE 按树计算组?

现在我有一个这样的数据集;(8 条记录)

树如下:

而且我想按每个孩子计算所有总和记录(不是子孩子,子孩子的记录应该计算到它的父亲或祖父,直到第一级子节点)。

所以结果应该是:

但是,当我使用 start with connect by 和 with group by 关键字时,我无法获得预期的结果。

我的sql如下:

结果是空的..谁能帮帮我?或者谁知道 oracle group by 关键字的详细信息在与树结构一起使用时起作用?

0 投票
3 回答
2958 浏览

sql - 在 Oracle 中是否有“连接方式”的替代方法?

我正在寻找替代方案CONNECT BY

有什么建议么?

0 投票
1 回答
1469 浏览

sql - Oracle CONNECT BY 查询的索引和时间复杂度?

我有多个分层菜单存储在 Oracle 11g 表(称为items)中,结构如下:

  • menu: 项目所属菜单的 ID。
  • id: 菜单项的 ID。在菜单中是唯一的,但不是在表中。
  • name:菜单项的名称。
  • parent:id菜单项的父级(总是在同一个菜单中)。

该表包含大约 100.000 行。我使用以下查询生成所有菜单项及其相应根项的列表:

(一个菜单中可能有多个根,所以我不能只使用没有连接依据的普通连接。)

我需要创建哪些索引来优化此查询?我已经有一个组合索引idmenu确保唯一性,但我还需要更多吗?

此外,考虑到我创建了正确的索引,这个查询的时间复杂度是多少?是否与项目总数、每个菜单的数量、菜单的深度有关?

编辑:这是输出EXPLAIN PLAN

但是,这只是在 100 个项目的小数据集上,因为我还没有完整的数据集。由于篇幅原因,我排除了一些列。如果您需要输出中的其他内容,请告诉我。

0 投票
1 回答
249 浏览

sql - Oracle分层查询仅选择根父母

我有一个树数据,我试图只选择根父母。数据可能是更大集合的子集,因此父级可能不为空。我想为数据集中的每棵树设置最高级别。

我希望看到结果

Rowid 4 未被选为子集的一部分是父级,但由于 4.1 是该数据集中的最高值,我想返回该行。所以基本上,我想查看每个层次结构的所有最顶层记录。

谢谢你。

0 投票
1 回答
623 浏览

sql - 如何将 pl/sql 代码制作成 Ansi-Sql?

我的问题对于 sql 专家来说可能并不具有挑战性。我想将我的 sql 重写为 ansi-sql。如何在 Oracle 中将下面的 sql 更改为 ansi-sql?

0 投票
1 回答
128 浏览

sql - 层次查询(connect by 子句)

我正在尝试使用 connect by 子句编写查询,但我无法处理。

通常我有表:

现在,我要做的是找到一个未填写付款列的帐户(甚至是父帐户)每个帐户都可以有指示其他帐户ID的父帐户(父列)。如果我在示例中展示它可能会更容易:

第一个帐户没问题 - 付款栏已填写。第二个不行,因为它是空的-但是我们可以看到有一个父帐户,所以现在我们检查 (3457 account) ,付款栏再次为空,但再次有一个父帐户 (5686),最后有一个付款栏填充。所以对于上面的情况,select 不应该显示什么如果 Table 看起来会怎样:

正如我们所看到的,唯一的变化是帐户 ID 旁边的 null 5686,因此正确的选择应该显示帐户:4576, 3457, 5686