Devuelve la estructura jerárquica json en una sola consulta SQL
Necesito crear una consulta SQL (postgres 9.5.3) que devuelva un resultado json jerárquico. Este es el código que escribí hasta ahora
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
Tengo un problema para crear un objeto jerárquicoChildren
. Para estas estructura
A
B
C
D
E
elarray_append
Las funciones parecen agregar elementos secundarios en una sola matriz:
A.Children = [ {B}, {C}, {D} ] //for category A
Necesito estructura:
A.Children = [ {B, Children = [ {C, Children = [ {D} ] } ] } ]
¿Cómo puedo cambiar mi consulta para lograr esto? Saludos