0
votes

Comment utiliser Alias ​​dans Insert Requête?

J'ai suivi de la déclaration suivante: xxx

Comment puis-je utiliser alias pour l'identifiant de la classe de chambre pour éviter de la sélectionner à chaque fois? Lorsque j'essaie xxx

i get

erreur: colonne "st_id" n'existe pas

J'utilise PostgreSQL 9.6.


0 commentaires

3 Réponses :


1
votes

Vous pouvez le faire avec une croix de la requête sur les valeurs de la 2e colonne comme ceci: xxx

Voir le Demo .


1 commentaires

0
votes

Edit: Réponse mise à jour avec des informations supplémentaires fournies par OP dans un commentaire.

Vous pouvez utiliser avec code> (exemple ici: http://sqlfiddle.com/#!17/43b73/1/0 ): P>

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;


0 commentaires

2
votes

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);


0 commentaires