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层次结构选择它?
层次结构意味着,表的一行是“父”,另一行是“子”。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)
返回约翰(和约翰本身)的所有老板。