Получить иерархическую XML-структуру запросом из таблицы в PostgreSQL?

В таблице, условно говоря, table хранится дерево: есть идентификатор записи id и ссылка на родительскую запись pid (у корня IS NULL), ну и ещё какие-то данные (поле name, например).


В результате запроса мне нужно вытащить одним значением всю иерархическую структуру в виде XML. Собственно, я это делаю. Вопрос в том, есть ли какая-то возможность реализовать такую функциональность просто? Скажем, с помощью рекурсивных запросов?


Обычно в рекурсивном запросе можно использовать информацию из родительской записи при обработке дочерних. А тут нужно как бы наоборот — аггрегировать результат обработки дочерних записей при обработке родительской, и на выходе мы должны получать что-то вроде:

<node name="корень"><node name="узел-1"><node name="узел-1-1"></node>…</node><node name="узел-2"></node>…</node>



Это возможно?
  • Вопрос задан
  • 4487 просмотров
Пригласить эксперта
Ответы на вопрос 3
josser
@josser
Не уверен что ето то что нужно, но возможно вы сами придумаете как это можно применить :)
www.postgresql.org/docs/current/static/ltree.html
Ответ написан
josser
@josser
Ну и да, в случае если вам надо вытащить всю структуру, а не только какую-то ветку, то проще сделать select * from
а потом уже средствами языка организовать дерево.

Запрос к базе все таки тяжелей чем операции с локальными данными
Ответ написан
josser
@josser
Еще неплохая статья о хранении деревьев в Postgres
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы