我有一些示例数据,显示了实验室(位置)之间的层次结构。
CREATE TABLE "DEMO"."LABS"
(
"LABID" VARCHAR2(20 BYTE),
"PARENT" VARCHAR2(20 BYTE)
)
一个实验室有一个单亲,因此有n个祖先。我找到了一种方法来找出在Oracle's website上具有特定实验室ID的所有祖先列表。
SELECT LABID
FROM LABS
START WITH LABID = 111
CONNECT BY PRIOR LABS.PARENT = LABS.LABID;
现在,我想从中创建一个遍历所有实验室标识符的视图。
我尝试了一些操作(包括LEFT JOIN),但从未设法获得正确的结果。
如果我的表包含:
-----------------
| LAB_ID | PARENT |
-----------------
| 1 | NULL |
| 11 | 1 |
| 111 | 11 |
-----------------
我想要一个能给我的视图:
-------------------
| LAB_ID | ANCESTOR |
-------------------
| 1 | NULL |
| 11 | 1 |
| 111 | 1 |
| 111 | 11 |
-------------------
请注意,现在我如何获得实验111的2条记录。练习的重点是我希望能够以一种简单的方式来查询数据,即:
SELECT ANCESTOR FROM my_view WHERE LAB_ID = ?
我注意到了这个question and answer,但是我没有完全理解它。