J'ai suivi de la déclaration suivante: Comment puis-je utiliser alias pour l'identifiant de la classe de chambre pour éviter de la sélectionner à chaque fois?
Lorsque j'essaie p> i get p> erreur: colonne "st_id" n'existe pas p> J'utilise PostgreSQL 9.6. p> p>
3 Réponses :
Vous pouvez le faire avec une croix de la requête sur les valeurs de la 2e colonne comme ceci: Voir le Demo .
P> P>
Vérifiez ceci: db-fiddle.com/f/wstjwq9dvtataqdwfob4rx/3
Edit: Réponse mise à jour avec des informations supplémentaires fournies par OP dans un commentaire.
Vous pouvez utiliser avec code> (exemple ici:
WITH cte AS (
SELECT id AS st_id, ARRAY[2,2,3,1] AS arr
FROM room_class
WHERE class_name='STANDARD'
UNION ALL
SELECT id AS st_id, ARRAY[1,2,3,4] AS arr
FROM room_class
WHERE class_name='LUXE'
)
INSERT INTO room (room_class_id, beds_amount)
SELECT st_id, UNNEST(arr) FROM cte;
Vous semblez vouloir vouloir:
INSERT INTO room (room_class_id, beds_amount) SELECT rc.id, v.beds_amount FROM (VALUES ('Standard', 2), ('Standard', 2), ('Standard', 3), ('Standard', 1), ('Luxe', 2) ) v(class_name, beds_amount) JOIN room_class rc USING (class_name);