在 Oracle 数据库中按叶选择树

nku*_*hta 1 oracle hierarchy hierarchical-data

Oracle 中有分层查询,使用 CONNECT BY PRIOR。每个人都知道,如何通过父级选择子级,但我需要通过子级选择父级。

这是我的表:

ID  PID     NAME            TYPE
1   null    EARTH           PLANET
2   1       USA             COUNTRY
3   2       CALIFORNIA      STATE
4   3       Los_Angeles     CITY
5   3       San_Francisco   CITY
6   3       San_Diego       CITY
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我有 San_Diego 的 ID,我需要知道 San_Diego 在哪个国家/地区?我的查询需要得到 USA (TYPE=COUNTRY) 吗?如何用oracle层次结构选择它?

Pra*_*sam 5

层次结构意味着,表的一行是“父”,另一行是“子”。PRIOR 用于显示谁是谁。子句 CONNECT BY PRIOR EMPNO = MGR 表示,如果两行具有相同的值,但在 EMPNO 列中有一行,而第二个 - 在列 MGR 中,则第二个是“父”,第一是“子”。所以,查询

SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR = 'John'
Run Code Online (Sandbox Code Playgroud)

返回 John 的所有下属(和 John 本身),并查询

SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR MGR = EMPNO
START WITH MGR = 'John'
Run Code Online (Sandbox Code Playgroud)

返回约翰(和约翰本身)的所有老板。