Создание представления из иерархического запроса в Oracle SQL - PullRequest
0 голосов
/ 30 марта 2019

У меня есть примеры данных, которые показывают иерархию между лабораториями (местоположениями).

 CREATE TABLE "DEMO"."LABS" 
   (
    "LABID" VARCHAR2(20 BYTE), 
    "PARENT" VARCHAR2(20 BYTE)
   )

Лаборатория имеет одного родителя и, следовательно, n предков.Я нашел способ выяснить весь список предков по конкретному идентификатору лаборатории на сайте Oracle .

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       |
 -------------------

Обратите внимание, как теперь я получаю 2записи для лабораторной работы 111. Весь смысл упражнения в том, что я хочу иметь простой способ запроса данных, а именно:

SELECT ANCESTOR FROM my_view WHERE LAB_ID = ?

Я заметил этот вопрос и ответ , ноЯ не смог полностью понять это.

...