PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres-JSONB-Abfrage für verschachteltes Objekt

Verwenden Sie json_agg() und jsonb_array_elements() Funktionen:

select json_agg(cell)
from (
    select jsonb_array_elements(elem->'cell') cell
    from (
        select jsonb_array_elements(data->'cust') elem
        from product_cust
        ) subsub
    ) sub

Sie können zwei innere Unterabfragen zusammenführen:

select json_agg(cell)
from (
    select jsonb_array_elements(jsonb_array_elements(data->'cust')->'cell') cell
    from product_cust
    ) sub

Ergebnisse nach Produkt-ID gruppieren:

select productid, json_agg(cell)
from (
    select productid, jsonb_array_elements(jsonb_array_elements(data->'cust')->'cell') cell
    from product_cust
    ) sub
group by 1
order by 1