Nota: Sto usando l'ultima versione di Postgres (9,4)Come combinare DISTINCT e ORDER BY in array_agg di valori jsonb in PostgreSQL
Sto cercando di scrivere una query che fa una semplice unione di 2 tavoli, e gruppi dalla chiave primaria della prima tabella, e fa un array_agg di diversi campi nella seconda tabella che voglio essere restituito come oggetto. L'array deve essere ordinato per una combinazione di 2 campi negli oggetti JSON e anche univoco.
Finora, hanno escogitato la seguente:
SELECT
zoo.id,
ARRAY_AGG(
DISTINCT ROW_TO_JSON((
SELECT x
FROM (
SELECT animals.type, animals.name
) x
))::JSONB
-- ORDER BY animals.type, animals.name
)
FROM zoo
JOIN animals ON animals.zooId = zoo.id
GROUP BY zoo.id;
Questo si traduce in una riga per ogni zoo, con un array aggregato di oggetti jsonb, uno per ogni animale, in modo univoco.
Tuttavia, non riesco a capire come anche ordinare questo dai parametri nella parte commentata del codice.
Se seleziono il distinto, posso ORDER BY campi originali, che funziona benissimo, ma poi ho duplicati.
Potrebbe fornire alcuni dati di esempio e l'output desiderato? – Eggplant