Wie wird eine Auswahl getroffen, um ein JSON-Array in einer Zelle zu erhalten, wenn INNER JOIN ausgeführt wird, wenn mehr als 1 Werte hinzugefügt werden sollen?Wie erfolgt die Auswahl in PostgreSQL mit Join, wenn mehr als eine Zeile die Anforderungen erfüllt?
ex Tables:
T1:
id | name
1 Tom
2 Dom
T2:
user_id | product
1 Milk
2 Cookies
2 Banana
ich natürlich SELECT * FROM T1 INNER JOIN T2 ON T1.id = T2.user_id
. Aber dann bekomme ich:
id | Name | product
1 Tom Milk
2 Dom Cookies
2 Dom Banana
Aber ich möchte bekommen:
id | Name | product
1 Tom [{"product":"Milk}]
2 Dom [{"product":"Cookies"}, {"product":"Banana"}]
Wenn ich etwas mit agg
Funktionen tun, dann brauche ich alles andere in GROUP BY
zu setzen, wo ich mindestens 10 haben Argumente. Und die gesamte Abfrage dauert mehr als 5 Minuten.
Meine T1
ist um 4000 Zeilen und T2
um 300 000 Zeilen, die jeweils mit einer Zeile in T1
verbunden sind.
Gibt es einen besseren Weg?
'array_agg()'? https://www.postgresql.org/docs/current/static/functions-aggregate.html – Nicarus