问题标签 [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.
database - 带有 where 子句行为的分层查询“START WITH”
我在工作期间遇到了一个查询,无法弄清楚它是如何工作的。查询的作用是查找今天是其父母的人的所有父母。
现在这里的技巧是每个父子关系都有一个有效的持续时间。
以此数据集为参考:
从 01-01-2012 到 02-02-2015 GrandParent 是父亲的父母
从 01-01-2012 到 02-02-2011 父亲是孩子的父母
孩子只是最底层的人
NewFather 是 Child 从 01-01-2012 到 02-02-2014 的父母
现在,今天对孩子有效的父母名单应该只包括NewFather
为了获取列表,之前我们使用了这个 SQL:
哪里personID
是绑定变量
此查询不起作用,因为 where 子句的行为是它首先获取所有记录,然后检查非连接条件(检查开始日期和结束日期)。这导致它给出的父母名单NewFather, GrandParent
是完全错误的!
因此,查询更改为以下内容:
现在我不明白的是:
start with 子句中的 where 条件如何以这种方式影响查询的行为?
我不喜欢这个查询的另一件事是它使用了一个完全不相关的表,该表名为ci_acct_per
,其中per_id
每个人在ci_per_per
.
我们能做得更好吗?是否有更清洁的方法可用于修复原始查询?
更新
此查询仅在层次结构中较高且在我们正在寻找孩子时才有效。但是,此查询从不寻找孩子,也不应该这样做。
oracle - Oracle - 联结表并连接到先前
我有一个我认为只能通过 Connect-to-prior 语句解决的问题。
我的数据模型简化如下:
一组项目组合成一个任务。一组任务组合成一个或多个项目(这是 TASK_ITEM 连接表的来源)。该过程从一组项目开始,并以单个项目结束(最后一个项目的 ITEM.NEXT_TASK_ID 为空,第一个项目不存在 task_item)。
我的问题:
给定一个 task_id我想提取所有前面的任务。
这是一个与Philip Greenspun 对 Oracle 中的树的出色介绍或Wikibook 对 Hierarchical Queries 的描述中描述的问题接壤的问题,但是当它们包含更多 ID 和连接表时,似乎找不到任何好的解决方案来解决这些问题。
可悲的是,我自己的 SQL-foo 很短,我用谷歌搜索了我的心,但没有找到解决我特定问题的方法。
在 Carrie Fisher 的声音中:帮助我 Stack Overflow,你是我唯一的希望。
oracle - 如何在 Oracle 中实现特定的分层查询
我有一个看起来像(Oracle 11.2.0.2.0)的表:
业务规则允许非叶级元素具有数据输入,但我需要像不需要那样报告它们我需要能够查询数据库以产生如下输出:
所以基本上我需要将允许数据输入到叶级别的中间分支下推。新叶子需要汇总到一个重命名的分支:
谢谢您的帮助
oracle11g - ORACLE 中的 USING CONNECT BY 子句
我有下表:
使用以下数据:
期望的输出是:
我曾尝试使用按级别连接。
输出是:
已选择 64 行
所以,我看不到我应该使用什么以及如何使用。因为级别每次都随着角色名称而变化。那么谁能告诉我我错过了什么?
sql - 在 Oracle 中使用 connect by 的巨大条件
我对 Oracle 11g 数据库有一些优化问题。我得到的查询结构如下:
并且由于 HUGE_CONDITION 真的很大(约 3500 个字符)并且在两个地方,查询非常慢;有没有办法以另一种方式做到这一点?
oracle - 如何使用 Oracle CONNECT BY 将层次结构中的所有值链接到某个值
关系模型是
表是:
如何获得与值 CHILD 或 FATHER = 2 链接的所有值?
一定是
并不是
因为它与值 2 无关。
如何通过使用 CONNECT BY 语句来实现这一点?谢谢你。
ps这个解决方案非常接近我,但不适用于我的模型:
数据库版本 - 10.2.0.5.0
模型与 Oracle 连接方式
因此,大致的策略可能是这样的(例如从 node=7 开始):
第 1 步(方向 = 向上)
结果是 7,2,1,3,其中 1,3 是高级根 (isleaf=1)
第 2 步(获取 1,3 方向=向下的路线)
结果是 2,7,6,其中 6 是低级根 (isleaf=1)
结果是 2,7,6,4,其中 6,4 是低级根 (isleaf=1)
第 3 步(获取 6,4 方向的路线 = 向上)
结果是 5,7,2,1,3 其中 5,1,3 是高级根 (isleaf=1) 我发现这个结果是 node=5
然后我必须改变方向向下..然后再次向上..然后再次向下..
但是如何在一次选择中联合所有这些步骤?初学者很难。请帮帮我。
sql - “连接方式”从多个分隔字符串生成行
我们可以使用“连接方式”从 oracle 中的分隔字符串生成行。喜欢:
我想将内部查询用作所有更多记录的联合。就像是:
这样我就可以得到一个结果集,
但它不能正常工作,它来了:
应用 DISTINCT 不是目标。因为字符串可能不同,在这里拆分更大的字符串需要花费大量时间。我猜,在这个查询中,有些东西 LEVEL 生成是不合适的。可能需要使用 Rn 上的按设施分组。任何人都可以帮我写这个查询吗?提前谢谢。:)
oracle - Oracle“连接方式” - 多个层次结构
我们使用的是 Oracle 11g R1。这是代码:
我想要的结果是:
这里的关键是除了通常的 PRIOR ID = PARENT_ID 层次结构之外,还有另一个基于 PRIOR ID = LEFT_SIBLING_ID 的层次结构。子项按 PRIOR ID = LEFT_SIBLING_ID 的顺序排序。这就是为什么 3 后面跟着 2,12 后面跟着 11 等等。这个顺序很重要。
我对如何做到这一点持空白。
编辑:
更多行以清楚地说明排序问题:
查询结果:
尽管兄弟姐妹的排序正确(顶级除外),但它们不再直接位于其父级之下。
sql - 使用 CONNECT BY Oracle 10 的查询极慢
我有一个challenge
包含大约 12000 行的表。每个点都连接到它周围的四个点,例如 100 连接到 99 101 11 和 189。我用一个小规模的表进行了尝试,它工作得很好,但是随着我增加表的大小,查询变得成倍地变慢,现在它甚至不会完成。这是我的查询
任何有关如何优化此查询的建议将不胜感激。
performance - 奇怪的查询行为 oracle 11g
我有一个查询:
此查询有效。但是,如果我只是从选择部分中删除名称,例如:
查询只是挂起,但正在使用 oracle 10g,当我们升级到 oracle 11g 时问题就开始了。谁能解释为什么?