问题标签 [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 回答
9891 浏览

sql - 在 oracle 树查询中连接其他表

给定一个简单的 (id, description) 表 t1,例如

还有一个父子关系表t2,比如

Oracle 提供了一种将其作为具有一些自定义语法扩展的树来遍历的方法:

确切的语法并不重要,我可能在上面犯了一个错误。重要的是上面会产生一些看起来像

我的问题是:是否可以在 sys_connect_by_path() 中加入另一个表,例如上面的 t1 表,以生成类似:

0 投票
2 回答
1762 浏览

sql - oracle 9i 用给定的孩子获得树的最高成员

我在 Oracle 9i 数据库表中有父子关系

像:

我需要从给定的孩子那里得到绝对的父母。说,我有孩子 4,它必须给我父母:1

我已经查看了 CONNECT BY ,但找不到解决方案。

0 投票
3 回答
23182 浏览

oracle - 与Oracle混合Connect by、inner join和sum

我需要有关 oracle 查询的帮助。

这是我的设置:

我有 2 个表,分别称为“任务”和“时间表”。“任务”表是一个递归表,这样每个任务可以有多个子任务。每个时间表都与一个任务(不一定是“根”任务)相关联,并包含在其上工作的小时数。

例子:

任务

编号:1 | 名称:任务A | parent_id:空

编号:2 | 名称:任务A1 | parent_id:1

编号:3 | 名称:任务 A1.1 | parent_id:2

编号:4 | 名称:任务B | parent_id:空

编号:5 | 名称:任务 B1 | parent_id:4

时间表

编号:1 | 任务ID:1 | 小时:1

编号:2 | 任务ID:2 | 小时:3

编号:3 | 任务ID:3 | 小时:1

编号:5 | 任务ID:5 | 小时:1 ...

我想做的事:

我想要一个查询,它将返回在“任务层次结构”上工作的所有时间的总和。如果我们看一下前面的例子,这意味着我想得到以下结果:

任务 A - 5 小时 | 任务 B - 1 小时

起初我试过这个

它几乎可以工作。唯一的问题是,如果根任务没有时间表,它将跳过整个层次结构......但可能有子行的时间表,这正是任务 B1 发生的情况。我知道这是导致我的问题的“内部连接”部分,但我不确定如何摆脱它。

知道如何解决这个问题吗?

谢谢

0 投票
1 回答
737 浏览

oracle - 我可以在不使用 where 子句的情况下创建自定义表达式吗?

虽然我已经在上一个问题中使用本机查询解决了这个问题。我现在想知道是否可以在不使用 where 子句的情况下创建可在 Criteria 中使用的自定义表达式?我不想要 where 子句的原因是 Oracle 的connect by ... start with ...( here ) 语句。我按照这个页面开始我的工作。但是,这将生成类似select * from foo where connect by start with...的代码

这是我正在使用的。查看生成的内容,我可以说它正在生成正确的语句减去 where 子句。

我正在这样使用它。

我感觉这与.Add()DetachedCriteria 中的有关,但不是 100% 肯定。不幸的是,我似乎找不到太多关于创建自定义表达式的文档。

编辑:现在我想它看起来好像我在叫错树。虽然这并不重要(我已经有了一个不错的实现)。我仍然有兴趣了解如何进一步自定义 NHibernate。

编辑 2:由于开箱即用的 NHibernate 不支持 Oracle 的专有功能,start with ... connect by. 我正在尝试通过添加对 NHibernate 的本机支持来了解有关扩展 NHibernate 的更多信息。我知道我可以使用自定义方言注册这些功能。但我想知道是否可以将它作为标准来实现,以便我可以将它与我的其他标准查询一起使用。我发布的代码工作正常并且正确地创建了有效的 SQL,但是当我将 StartWithConnectByCriteria 添加到我的条件时,NHibernate 将发出一个查询,例如select this_.id from table where start with ... connect by. 这是一个无效的查询,因为该子句不属于 where。

这是我希望 NHibernate 生成的查询。

请注意此查询中没有where子句。但是,start with ... connect by仍然可以与where clause. 您可以在此处阅读有关这些关键字如何工作的更多信息。

0 投票
1 回答
999 浏览

sql - Oracle 'CONNECT BY' 语法

这是以下问题的一个分支: Single out duplicates between two results set

正如对该问题的评论,我正在尝试使用 Oracle 特殊的“CONNECT BY”语法来实现我的查询。在我的案例中,我无法找到有关如何实现语法的任何(明确)信息。

我的查询:

谁能指出我正确的方向以将其转换为不同的语法?

我在想一些事情:

这显然不起作用,我不知道如何集成 fnpp 的功能......还有。有什么帮助吗?

0 投票
1 回答
3646 浏览

oracle10g - 我想使用 oracle connect by 获取每个孩子的最终父母,从语句开始

我正在使用 start with , connect by statement 来递归地获取数据,我得到了所有的父母 - 孩子,但我只想得到每个孩子的最终父母。例如,我有以下数据

所以我只想要输出

我的查询是

任何机构都可以帮我解决这个问题。

0 投票
1 回答
353 浏览

sql - Oracle 中的相关行生成查询

鉴于此起始 CTE:

如何生成一个结果集,该结果集在 Section 中每行的行数与 StartUnit 和 EndUnit (含)之间的数字一样多,且值递增?

也就是说,我希望看到以下结果集:

请注意,Sections CTE 中的某些值将是参数,因此它不像将我的 UNION 扩展到正确的数字那么简单。

更新

我对此进行了更多的考虑,并有了另一个指导方针。我会接受任何正确的答案,但特别希望有人能够展示如何使用 CONNECT BY PRIOR 来做到这一点,并且中间没有额外的 CTE ......

我意识到我可以将 CTE 更改为:

但我在这里倾向于远离它,因为它可能来自一个表而不是从 DUAL 中选择的。因此,让我们假设 Sections CTE 实际上是来自表的简单查询,例如:

原来的问题仍然存在。

0 投票
3 回答
6420 浏览

sql - 除 Oracle 之外的 RDBMS 中的 CONNECT BY 或分层查询

Oracle 附带了一个非常方便的特性。您可以使用以下子句创建分层查询(递归行为):

如此处所述:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/queries003.htm

我想知道,是否有任何其他已建立的 RDBMS 支持等效或类似的语法?或者可以使用常规 SQL 来一般地模拟这样的递归行为吗?

我希望能够模拟的一个很好的例子是这个(取自 Oracle 文档):

导致:

伪列和用它实现的LEVEL缩进对我来说并不重要

0 投票
1 回答
1554 浏览

oracle - 有没有一种方法可以在 Oracle CONNECT BY 查询中按经理降序排序?

在这个场景...

结果看起来像这样。

似乎在连接期间,经理们以升序结束。有什么办法可以控制这种行为,使它们按降序出现?

谢谢

邪恶的

0 投票
1 回答
177 浏览

sql - 如何使 CONNECT BY 参数可选

我有一个使用的程序Connect By

这个数字1337是这个过程的一个参数,如果这个值是0我想忽略connect by代码并执行其他所有内容。

我该如何处理?