Return json Hierarchische Struktur in einer einzelnen SQL-Abfrage

Ich muss eine SQL-Abfrage erstellen (postgres 9.5.3), die ein hierarchisches json-Ergebnis zurückgibt. Dies ist der Code, den ich bisher geschrieben habe

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

Ich habe Probleme beim Erstellen eines hierarchischen ObjektsChildren. Für diese Struktur

A
    B
        C
D
    E

dasarray_append functions scheint alle untergeordneten Elemente in ein einzelnes Array anzuhängen:

A.Children = [ {B}, {C}, {D} ]    //for category A

Ich brauche Struktur:

  A.Children = [ {B, Children = [ {C, Children = [ {D} ] } ] } ]

Wie kann ich meine Abfrage ändern, um dies zu erreichen? Grüß

Antworten auf die Frage(2)

Ihre Antwort auf die Frage