Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Рекурсивное построение дерева каталогов с преобразование в json / 7 сообщений из 7, страница 1 из 1
13.02.2015, 14:39
    #38879173
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивное построение дерева каталогов с преобразование в json
Для оптимизации основного приложения необходимо собрать в 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
13.02.2015, 15:37
    #38879229
tadmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивное построение дерева каталогов с преобразование в json
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
13.02.2015, 15:57
    #38879262
crause
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивное построение дерева каталогов с преобразование в json
Код: sql
1.
catalog_id bigint DEFAULT 0,


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

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

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

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

в итоге намного проще оказалось написать рекурсивную функцию, которая возвращала json.
сам сегодня таким же занимался, но функцию вложил в функцию и мне не хватило памяти для ее выполнения, увеличивать не стал так как дефолт не хотел трогать.
...
Рейтинг: 0 / 0
13.02.2015, 16:32
    #38879308
tadmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивное построение дерева каталогов с преобразование в json
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
14.02.2015, 13:11
    #38879724
biwed.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивное построение дерева каталогов с преобразование в json
crause,
Добрый день.
Пока для меня не совсем ясно, что вы хотите. С рекурсией разбирался. Может быть эта ссылка вас устроит. http://www.biwed.ru/index.php/dobryaki/16-sql/27-sozdanie-tablitsy-izmereniy-iz-ierarhicheskoy-tablitsy
Основная мысль преобразовать иерархическую таблицу в обычную.

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


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