У меня есть примеры данных, которые показывают иерархию между лабораториями (местоположениями).
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 = ?
Я заметил этот вопрос и ответ , ноЯ не смог полностью понять это.