【发布时间】:2018-07-24 02:32:48
【问题描述】:
我在构建分层查询以根据类型获取父节点时需要帮助。例如:
Table (org)
pid|cid|type|name
| 1|MGT |Ofc Pres
1| 2|DEP |HR
1| 3|DEP |IT
3| 4|DIV |Web
3| 5|DIV |Database
4| 6|SEC |HTML
4| 7|SEC |JAVA
我的目标是在给定 cid(6 或 7)的情况下获得 DEP。使用下面的查询,我只得到 pid (4)。
select pid
from org
start
with cid = 7
connect
by
prior cid = pid
感谢任何反馈。
2018 年 7 月 24 日更新:
一些可能有帮助的附加信息。
MGT(管理)是最高/根级别 DEP(部门)隶属于 MGT。 DIV(部门)在 DEP 下。 SEC(部分)在 DIV 下。
因此,如果给定一个 SEC 类型的子 ID,我需要获取它所在的 DEP(部门)(这意味着我需要先获取 DIV,然后再获取 DEP)。如果给定一个 DIV 类型的子 ID,那么我需要获取它所在的 DEP。
【问题讨论】:
-
我不明白。 “获取 DEP”是什么意思?你的意思是,当
type = 'DEP'时停止?然后你需要得到DEP的name吗?如果在上树时,您从未点击过DEP怎么办? (或者你保证你永远都会这样做?嗯,显然这是不可能的;如果你“从 1 开始”,你永远不会点击DEP。) -
@mathguy 是的。我需要获取类型为“DEP”的父级的名称/ID。是的,它保证 DEP 将永远存在。不一定是下一个级别,但它会在那里。 Start 将始终低于 DEP。
标签: oracle hierarchy connect-by