powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Рекурсивное построение дерева каталогов с преобразование в json
7 сообщений из 7, страница 1 из 1
Рекурсивное построение дерева каталогов с преобразование в json
    #38879173
crause
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для оптимизации основного приложения необходимо собрать в json объект дерево каталогов.

Помогите и объясните.

таблица
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE _catalog
(
  id bigserial NOT NULL,
  catalog_id bigint DEFAULT 0,
  caption text
)



если у меня будет до 10 уровней
через WITH RECURSIVE
мне придется сделать 10 объединений???

натолкните в нужном направлении
...
Рейтинг: 0 / 0
Рекурсивное построение дерева каталогов с преобразование в json
    #38879229
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crause
если у меня будет до 10 уровней
через WITH RECURSIVE
мне придется сделать 10 объединений???
натолкните в нужном направлении

А где тут у вас уровни?
Рекурсия для того и нужна, чтобы не делать n-join
Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE _catalog
(
  id bigserial NOT NULL,
  pid int8, --вот это id объекта-родителя, на нем и будете строить рекурсию
  catalog_id bigint DEFAULT 0,
  caption text
)
...
Рейтинг: 0 / 0
Рекурсивное построение дерева каталогов с преобразование в json
    #38879262
crause
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
catalog_id bigint DEFAULT 0,


вообще-то планировал это.
почему это нельзя использовать?
...
Рейтинг: 0 / 0
Рекурсивное построение дерева каталогов с преобразование в json
    #38879269
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crause,

делал когда-то такую штуку, если делать одним with recursive запросом то совсем нетривиально получается, т.к. нужно дерево сверху вниз пройти и назад вернуться в правильном порядке собирая данные.

в итоге намного проще оказалось написать рекурсивную функцию, которая возвращала json.
...
Рейтинг: 0 / 0
Рекурсивное построение дерева каталогов с преобразование в json
    #38879287
crause
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexiuscrause,

делал когда-то такую штуку, если делать одним with recursive запросом то совсем нетривиально получается, т.к. нужно дерево сверху вниз пройти и назад вернуться в правильном порядке собирая данные.

в итоге намного проще оказалось написать рекурсивную функцию, которая возвращала json.
сам сегодня таким же занимался, но функцию вложил в функцию и мне не хватило памяти для ее выполнения, увеличивать не стал так как дефолт не хотел трогать.
...
Рейтинг: 0 / 0
Рекурсивное построение дерева каталогов с преобразование в json
    #38879308
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crause,
если catalog_id - это parentID

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  WITH RECURSIVE
    Rec (ID, catalog_id, Level)
  AS (

    select id, catalog_id,0
    from _catalog
   -- where id= in_ID

    union all

    select SC.ID, SC.catalog_id, R.Level + 1
    from _catalog as SC
    inner join rec as r on (r.catalog_id= SC.ID)      

    )       
    SELECT  ID, catalog_id, Level
    FROM Rec as R
...
Рейтинг: 0 / 0
Рекурсивное построение дерева каталогов с преобразование в json
    #38879724
biwed.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crause,
Добрый день.
Пока для меня не совсем ясно, что вы хотите. С рекурсией разбирался. Может быть эта ссылка вас устроит. http://www.biwed.ru/index.php/dobryaki/16-sql/27-sozdanie-tablitsy-izmereniy-iz-ierarhicheskoy-tablitsy
Основная мысль преобразовать иерархическую таблицу в обычную.

С уважением,
biwed.ru
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Рекурсивное построение дерева каталогов с преобразование в json
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]