Иерархическая рекурсия

Есть таблица иерархии групп

где "3 уровень" самый низший, а "1 уровень" - самая высшая

Есть таблица наименований с мин и макс кол-вом, кодом наименования productid и кода группы

https://dbfiddle.uk/?rdbms=postgres_12&fiddle=47efa1fc7c6cdfa73fd3c1646e92302f

По итогу рекурсивный запрос, начиная с самого низшего уровня, где значение min и max не NULL перебирает группы вверх по иерархии только на один уровень вверх, пока не найдет заполненное значение. Самое верхнее значение группы, если parentid is null Итог должен получиться вот так. Мне при помощи рекурсии нужно достать значения parentmin и parentmax

введите сюда описание изображения

Пример кода такой prismwgroupid = '39f3ba3c-21dc-c55f-d31d-9df4cab5a33d' - это код группы с которой начинается высчитываться

WITH RECURSIVE c
AS
(
select prismstock.prismwgroupid, prismwgroup.parentid, prismstock.productid, prismstock."min", prismstock."max", 1 as level 
from prismstock 
    inner join prismwgroup ON prismwgroup.id = prismstock.prismwgroupid
where prismwgroupid = '39f3ba3c-21dc-c55f-d31d-9df4cab5a33d'
 UNION ALL
    select ps.prismwgroupid, c.parentid, prismstock.productid,ps."min" as parent_min, ps."max" AS parent_max, c.level + 1 AS level
from prismstock AS ps
    INNER JOIN c ON ps.Id = c.parentid
--where prismwgroupid = '39f3ba3c-21dc-c55f-d31d-9df4cab5a33d'
    )
    SELECT *
FROM c

Ответы (0 шт):