FoxBase!
msgbartop
Блог Oracle разработчика
msgbarbottom
foxbase

07.12.2010 Иерархический запрос в Oracle

Приведем пример простого иерархического запроса в 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
После выполнения такого иерархического запроса мы увидим примерно следующую картину:
oracle connect by
www.foxbase.ru



Смотрите также:



Оставьте свой комментарий

Вы должны быть авторизированны, чтобы оставить комментарий.