2017-06-06 2 views
0

Ich habe ein Tabellenelement mit den Attributen no (integer) und price (integer), auch einen anderen Tabellenwagen mit den Attributen no (integer) und items (array of item).Array Insertion Postgres

Ich habe einige Datensätze in Elementen.

Als ich versuchte:

INSERT INTO myschema.cart VALUES(1,'{SELECT item from myschema.item}') 

Ich bin Fehler fehlerhaften Datensatz wörtliche bekommen.

Ich erwartete, dass alle Elemente von myschema.item in den Einkaufswagen-Datensatz eingefügt werden.

+0

' '' bezeichnet einen Stringliteral. – zerkms

Antwort

0

Sie können eine Unterabfrage in einer solchen Zeichenfolge nicht schreiben.

Was Sie tun müssen, ist, aggregieren die item s in ein Array mit array_agg

INSERT INTO myschema.cart 
VALUES (1, (SELECT array_agg(item) FROM myschema.item)); 

Oder

INSERT INTO myschema.cart 
SELECT 1, array_agg(item) FROM myschema.item; 
1

Es ist schwer, Ihnen genaue Aussage, ohne dass die Tabellenstrukturen und so zu geben, aber Sie kann in ein Array auswählen:

INSERT INTO myschema.cart (id, item_ids) 
SELECT 1, array(SELECT id from myschema.item) 

Dies wird se lekt die IDs aus der Item-Tabelle in ein Array.

Sie können es durch Schreiben testen:

select array(SELECT id from myschema.item)