Приведем пример простого иерархического запроса в Oracle SQL, при помощи которого можно вывести иерархическую структуру некоторой Oracle таблицы.
Использовать в запросе мы будем синтаксис Oracle с connect by - start with, основная задача визуально показать в запросе уровни иерархии. Такой запрос может быть полезен во многих случаях, например при выборе значения из иерархической таблицы при помощи простого плоского представления данных.
Таблица, к которой мы будем обращаться при помощи иерархического запроса должна иметь три обязательных поля: идентификатор записи (ID), ссылку на родительскую запись (PARENT_ID) и название или наименование того, что хранится в таблице (NAME). В запросе будет использован псевдостолбец Oracle LEVEL, который хранит номер уровня иерархии текущей записи начиная с единицы, а также функцию Oracle SQL LPAD, при помощи которой мы будем добавлять пробелы к названию записи слева в зависимости от уровня иерархии записи.
Запрос будет выглядеть следующим образом:
SELECT LPAD(name,LENGTH(name)+(level-1)*4) AS name
FROM my_table
CONNECT BY PRIOR id = parent_id
START WITH parent_id IS NULL
После выполнения такого иерархического запроса мы увидим примерно следующую картину:
Смотрите также:
Оставьте свой комментарий
Вы должны быть авторизированны, чтобы оставить комментарий.