Мне нужно создать SQL-запрос (postgres 9.5.3), который возвращает результат иерархического json. Это код, который я написал до сих порВозвращение json Иерархическая структура в одном SQL-запросе
WITH RECURSIVE q AS (
WITH c AS (
SELECT pc."Id", pc."Description"
FROM "ProductCategories" pc
WHERE pc."Active" = true
)
SELECT pc, ARRAY[c] as "Children", ARRAY[pc."Id"] as "Path"
FROM "ProductCategories" pc
LEFT JOIN c ON pc."Id" = c."Id"
WHERE NULLIF(pc."ParentId", 0) IS NULL
AND pc."Active" = true
UNION ALL
SELECT pc_descendant, array_append(q."Children", c), q."Path" || pc_descendant."Id"
FROM q
JOIN "ProductCategories" pc_descendant ON pc_descendant."ParentId" = (q.pc)."Id"
LEFT JOIN c ON pc_descendant."Id" = c."Id"
WHERE pc_descendant."Active" = true
)
SELECT * FROM q
У меня есть проблема, чтобы создать иерархическую объект Children
. Для этой структуры
A
B
C
D
E
в array_append
функция, кажется, добавить любые дочерние элементы в единый массив:
A.Children = [ {B}, {C}, {D} ] //for category A
мне нужна структура:
A.Children = [ {B, Children = [ {C, Children = [ {D} ] } ] } ]
Как я могу изменить мой запрос для достижения этой цели ? С уважением