Задать вопрос

Получить иерархическую 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>



Это возможно?
  • Вопрос задан
  • 4601 просмотр
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Нетология
    Инженер по тестированию
    8 месяцев
    Далее
  • Thinknetica
    Профессиональная разработка на Ruby on Rails
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
josser
@josser
Не уверен что ето то что нужно, но возможно вы сами придумаете как это можно применить :)
www.postgresql.org/docs/current/static/ltree.html
Ответ написан
josser
@josser
Ну и да, в случае если вам надо вытащить всю структуру, а не только какую-то ветку, то проще сделать select * from
а потом уже средствами языка организовать дерево.

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

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

Похожие вопросы