Всем добрый день. У меня появился такой вопрос. Скажем имеется таблица в которой хранится древовидная структура. Допустим в таблице есть Id - ид записи и IdParent - ид родителя. Как можно с помощью sql запроса выбрать самого верхнего родителя у записи с id = 10? Возможно ли вообще такое средствами sql?
Ответ
Возможность создания рекурсивных запросов есть начиная с SQL 1999. Это возможно с помощью оператора WITH. В MS Sql будет выглядеть так:
WITH rec AS
(
SELECT *
FROM MyTable
WHERE Id = 10
UNION ALL
SELECT mt.*
FROM MyTable mt
JOIN rec p ON mt.parentID = p.id
)
SELECT ParentId
FROM rec
where Id = 10
Если не ошибаюсь, в MySql это работать не будет. Насчет Oracle - не в курсе
Комментариев нет:
Отправить комментарий