@McMike

Как выбрать все нижестоящие категории?

Есть каталог с категориями, с неограниченной вложенностью. Хранится все в postgres, обычная таблица с полями id и parent_id из самой себя.
Как выбрать для указанного id все подкателгории?
  • Вопрос задан
  • 332 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега PostgreSQL
Седой и строгий
Используйте рекурсивный CTE:
with recursive r as (
    select
      id, parent_id, name
    from catalog_category
    where id = 8
  union
    select
      cc.id, cc.parent_id, cc.name
    from catalog_category as cc
    join r
      on cc.parent_id = r.id
)
select id, name from r where id <> 8;

Этот запрос выбирает все категории дочерние по отношению к категории с ID = 8.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@lega
Если нужно быстро и одним запросом, то каждый элемент должен содержать массив (+индекс) всех его родителей.
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Комментировать
@McMike Автор вопроса
Вот еще нашел статью )) https://habrahabr.ru/post/269497/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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