问题标签 [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.
sql - 在 oracle 树查询中连接其他表
给定一个简单的 (id, description) 表 t1,例如
还有一个父子关系表t2,比如
Oracle 提供了一种将其作为具有一些自定义语法扩展的树来遍历的方法:
确切的语法并不重要,我可能在上面犯了一个错误。重要的是上面会产生一些看起来像
我的问题是:是否可以在 sys_connect_by_path() 中加入另一个表,例如上面的 t1 表,以生成类似:
sql - oracle 9i 用给定的孩子获得树的最高成员
我在 Oracle 9i 数据库表中有父子关系
像:
我需要从给定的孩子那里得到绝对的父母。说,我有孩子 4,它必须给我父母:1
我已经查看了 CONNECT BY ,但找不到解决方案。
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 发生的情况。我知道这是导致我的问题的“内部连接”部分,但我不确定如何摆脱它。
知道如何解决这个问题吗?
谢谢
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
. 您可以在此处阅读有关这些关键字如何工作的更多信息。
sql - Oracle 'CONNECT BY' 语法
这是以下问题的一个分支: Single out duplicates between two results set
正如对该问题的评论,我正在尝试使用 Oracle 特殊的“CONNECT BY”语法来实现我的查询。在我的案例中,我无法找到有关如何实现语法的任何(明确)信息。
我的查询:
谁能指出我正确的方向以将其转换为不同的语法?
我在想一些事情:
这显然不起作用,我不知道如何集成 fnpp 的功能......还有。有什么帮助吗?
oracle10g - 我想使用 oracle connect by 获取每个孩子的最终父母,从语句开始
我正在使用 start with , connect by statement 来递归地获取数据,我得到了所有的父母 - 孩子,但我只想得到每个孩子的最终父母。例如,我有以下数据
所以我只想要输出
我的查询是
任何机构都可以帮我解决这个问题。
sql - Oracle 中的相关行生成查询
鉴于此起始 CTE:
如何生成一个结果集,该结果集在 Section 中每行的行数与 StartUnit 和 EndUnit (含)之间的数字一样多,且值递增?
也就是说,我希望看到以下结果集:
请注意,Sections CTE 中的某些值将是参数,因此它不像将我的 UNION 扩展到正确的数字那么简单。
更新
我对此进行了更多的考虑,并有了另一个指导方针。我会接受任何正确的答案,但特别希望有人能够展示如何使用 CONNECT BY PRIOR 来做到这一点,并且中间没有额外的 CTE ......
我意识到我可以将 CTE 更改为:
但我在这里倾向于远离它,因为它可能来自一个表而不是从 DUAL 中选择的。因此,让我们假设 Sections CTE 实际上是来自表的简单查询,例如:
原来的问题仍然存在。
sql - 除 Oracle 之外的 RDBMS 中的 CONNECT BY 或分层查询
Oracle 附带了一个非常方便的特性。您可以使用以下子句创建分层查询(递归行为):
如此处所述:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/queries003.htm
我想知道,是否有任何其他已建立的 RDBMS 支持等效或类似的语法?或者可以使用常规 SQL 来一般地模拟这样的递归行为吗?
我希望能够模拟的一个很好的例子是这个(取自 Oracle 文档):
导致:
伪列和用它实现的LEVEL
缩进对我来说并不重要
oracle - 有没有一种方法可以在 Oracle CONNECT BY 查询中按经理降序排序?
在这个场景...
结果看起来像这样。
似乎在连接期间,经理们以升序结束。有什么办法可以控制这种行为,使它们按降序出现?
谢谢
邪恶的
sql - 如何使 CONNECT BY 参数可选
我有一个使用的程序Connect By
这个数字1337
是这个过程的一个参数,如果这个值是0
我想忽略connect by
代码并执行其他所有内容。
我该如何处理?