2016-10-31 1 views
0

Comment exactement puis-je faire fonctionner cela? Je fais de mon mieux pour former une requête qui prend les clés primaires générées à partir de la première requête, puis les insère dans la deuxième table avec une deuxième valeur statique (33). Je reçois évidemment une erreur "plus d'une ligne renvoyée par une sous-requête utilisée comme expression". Je suis googled mon œil bille et ne peut pas résoudre ce problème. Peut-être qu'il y a une meilleure façon de faire ce que j'essaie de faire. J'utilise PostgreSQL 9.5 si cela est important.Comment insérer dans la table en utilisant plusieurs lignes retournées par la sous-requête?

WITH x AS (INSERT INTO OPTIONS (manufacturer_id, category, name, description) 
VALUES (
    UNNEST(ARRAY['10', '22', '33']), 
    'ExtColor', 
    UNNEST(ARRAY['EC', 'IC', 'IO']), 
    UNNEST(ARRAY['a', 'b', 'c']) 
) 
RETURNING option_id) 
INSERT INTO opt_car_data (car_id, option_id) VALUES ((SELECT option_id FROM x), 33); 

Répondre

1
WITH x AS (
    INSERT INTO options (manufacturer_id, category, name, description) 
    VALUES (
     UNNEST(ARRAY['10', '22', '33']), 
     'ExtColor', 
     UNNEST(ARRAY['EC', 'IC', 'IO']), 
     UNNEST(ARRAY['a', 'b', 'c']) 
    ) 
    RETURNING option_id 
) 
INSERT INTO opt_car_data (car_id, option_id) 
SELECT option_id, 33 
FROM x; 
+0

Merci beaucoup !!!!!!!!!!!!!!! Ça marche! – user3159860