Как использовать рекурсивный запрос в подзапросе в PostgreSQL - PullRequest
0 голосов
/ 02 апреля 2020

Я создал рекурсивный запрос, который возвращает мне строку истории товарной категории (типичное отношение родитель-потомок:

with recursive productCategoryHierarchy as (

  --start with the "anchor" row
  select
    1 as "level",
    pg1.id,
    pg1.title,
    pg1.parentproductgroup_id
  from product_group pg1
  where
    pg1.id = '17e949b6-85b3-4c87-8f76-ad1e61ea01e1' --parameterize me

  union all
  -- Get child nodes
  select
    pch.level +1 as "level",
    pg2.id,
    pg2.title,
    pg2.parentproductgroup_id

  from product_group pg2
  join productCategoryHierarchy pch on pch.parentproductgroup_id = pg2.id

)

-- Get hierarchy as string
select
  CONCAT('',string_agg(productCategoryHierarchy.title, ' > '),'')
from productCategoryHierarchy;

Теперь я хочу использовать этот результат в другом запросе как подзапрос , чтобы я мог использовать созданную строку в качестве атрибута в родительском запросе. Возможно ли это в Postgres или есть другое решение для получения иерархического дерева в виде строки в атрибуте?

1 Ответ

0 голосов
/ 02 апреля 2020

Вы ищете что-то подобное?

with recursive productcategoryhierarchy as (
...
), aggregated_values as ( 
  select string_agg(productCategoryHierarchy.title, ' > ') as all_titles
  from productCategoryHierarchy
)
select ..., (select all_titles from aggregated_values) as all_titles
from ... your main query goes here ..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...