Страницы

Поиск по вопросам

понедельник, 22 октября 2018 г.

Дерево в SQL

Всем добрый день. У меня появился такой вопрос. Скажем имеется таблица в которой хранится древовидная структура. Допустим в таблице есть 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 - не в курсе

Комментариев нет:

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