从Oracle SQL中的分层查询创建视图

时间:2019-03-29 21:49:13

标签: sql oracle hierarchical-data sql-view

我有一些示例数据,显示了实验室(位置)之间的层次结构。

 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,但是我没有完全理解它。

0 个答案:

没有答案