我希望我能够解释困扰我的问题。我有以下分层数据集(这只是34K记录的子集)
PARENT_ID CHILD_ID EXAM
TUDA12802 TUDA12982 N
TUDA12982 TUDA12984 J
TUDA12984 TUDA999 J
TUDA12982 TUDA12983 N
TUDA12983 TUDA15322 J
TUDA12983 TUDA15323 J
这是树的代表
TUDA12982 N
- TUDA12984 J
-- TUDA999 J
- TUDA12983 N
-- TUDA15322 J
-- TUDA15323 J
我需要的是清单的所有记录,带有exam = N和潜在的extest =’J’记录,可以嵌套。
select *
from test1
connect by prior child_id = parent_id
start with child_id = 'TUDA12982'
order siblings by child_id;
给我
PARENT_ID CHILD_ID EXAM
TUDA12802 TUDA12982 N
TUDA12982 TUDA12984 J
TUDA12984 TUDA999 J
TUDA12982 TUDA12983 N
TUDA12983 TUDA15323 J
TUDA12983 TUDA15322 J
但是我需要的是
TUDA12802 TUDA12982 N
TUDA12982 TUDA12984 J
TUDA12984 TUDA999 J
当我遇到EXAM =’N’记录时,需要停止运行。
我需要类似“停止于”子句的内容。
select *
from test1
connect by prior child_id = parent_id
start with child_id = 'TUDA12982'
stop with exam = 'N'
order siblings by child_id;
如何才能做到这一点?
罗伯特
您可以通过在connect by子句中添加“ exam =’J’”来做到这一点:
SQL> create table test1(parent_id,child_id,exam)
2 as
3 select 'TUDA12802', 'TUDA12982', 'N' from dual union all
4 select 'TUDA12982', 'TUDA12984', 'J' from dual union all
5 select 'TUDA12984', 'TUDA999', 'J' from dual union all
6 select 'TUDA12982', 'TUDA12983', 'N' from dual union all
7 select 'TUDA12983', 'TUDA15322', 'J' from dual union all
8 select 'TUDA12983', 'TUDA15323', 'J' from dual
9 /
Tabel is aangemaakt.
SQL> select parent_id
2 , child_id
3 , exam
4 , level
5 , lpad(' ',2*level) || sys_connect_by_path(parent_id||'-'||child_id,'/') scbp
6 from test1
7 start with exam = 'N'
8 connect by prior child_id = parent_id
9 and exam = 'J'
10 /
PARENT_ID CHILD_ID E LEVEL SCBP
--------- --------- - ------ ----------------------------------------------------------------------
TUDA12802 TUDA12982 N 1 /TUDA12802-TUDA12982
TUDA12982 TUDA12984 J 2 /TUDA12802-TUDA12982/TUDA12982-TUDA12984
TUDA12984 TUDA999 J 3 /TUDA12802-TUDA12982/TUDA12982-TUDA12984/TUDA12984-TUDA999
TUDA12982 TUDA12983 N 1 /TUDA12982-TUDA12983
TUDA12983 TUDA15322 J 2 /TUDA12982-TUDA12983/TUDA12983-TUDA15322
TUDA12983 TUDA15323 J 2 /TUDA12982-TUDA12983/TUDA12983-TUDA15323
6 rijen zijn geselecteerd.
问题内容: 我在Oracle11g中有一个具有(id,parent_id)结构的表。 我想对其进行查询,以获取与这些ID各自分层链接的所有行,因此结果应为: 我一直在和上苦苦挣扎,现在,我所能得到的只是查询所需结果的一小部分: 我不想使用任何循环来获取完整的结果。 任何的想法 ? 最好的问候,J茅r么我Lefr猫re PS:在第一个答案之后编辑,注意到我忘记了一些我想要的结果… 问题答案: 您发布
问题内容: 我试图找到一个特定领域的所有深度的父母,祖父母等。例如,给定以下结构,如果我提供5,则返回的值应为1、2、3和4。 我该怎么做? 问题答案:
问题内容: 我有一个MySQL表,如下所示: 现在,我想有一个简单的MySQL查询,只需向其提供ID [例如说id=19],然后就应该获取其所有子ID [即结果应具有ID ‘20,21,22’]…。 孩子的等级未知;它可能会有所不同.... 我知道如何使用for循环…但是如何使用单个MySQL查询实现相同的目标? 问题答案: 对于MySQL 8+:使用递归with语法。 对于MySQL 5.x:使
我有一个MySQL表,如下所示: 现在,我想有一个MySQL查询,我只需向它提供id(例如),然后我应该获得它的所有子id(即,结果应该有id'20、21、22']... 不知道孩子的等级;它可以变化.... 我知道如何使用循环来实现...但是如何使用单个MySQL查询实现相同的功能呢?
我是反应式编程的新手。我必须开发一个简单的Spring启动应用程序来返回一个json响应,其中包含公司及其所有子公司和员工的详细信息 创建了一个Spring Boot应用程序(Spring Webflow Spring data r2dbc) 使用以下数据库表来表示公司和子公司以及员工关系(这是一种与公司和子公司的层次关系,其中一个公司可以有N个子公司,而这些子公司中的每个子公司可以有另N个子公司
问题内容: 由于使用了Gentoo,经常发生这样的情况,即在更新程序链接到旧版本的库之后。通常,revdep- rebuild有助于解决该问题,但是这一次它依赖于python库,因此不会使用。 是否有“分层”变体向我显示哪个共享库取决于另一个共享库?大多数时候,库和可执行文件仅与少数几个其他共享库链接,而这些共享库又与少数几个共享库链接,从而使库依赖性成为一个大列表。我想知道我必须使用升级的另一个