Requête multiple sur plusieurs tables
Résolu
emmmmmy
Messages postés
22
Statut
Membre
-
emmmmmy Messages postés 22 Statut Membre -
emmmmmy Messages postés 22 Statut Membre -
Bonjour,
Je souhaiterais de l'aide concernant une requête multiple qui nécessite de faire une jointure entre trois tables.
Les voici :
ps_orders
- id_order - INT
- payment - VARCHAR (qui comporte le nom de plsrs moyens de remboursement ex:paypal..)
payment_method
- id_payment_method - INT
- name - VARCHAR (comporte le nom de ces moyens de remboursement ex:paypal..)
order_refund
- id_order - INT
- id_payment_method - INT (ne comporte rien encore)
Je souhaite insérer dans la colonne id_payment_method deorder_refund une valeur numérique et qu'elle y soit associé à la méthode de remboursement associée.
Pour cela je dois,
récuperer l'id_order de order_refund et le comparer à celui de ps_orders, si ceux-ci sont identiques alors je récupère la méthode de remboursement associée ( - payment - varchar ) (de ps_orders) et la compare à celui de - name - (de payment_method) et récupère l'id associé. Je retourne celui-ci dans la colonne encore vierge ( - id_payment_method - de order_refund) qui attend absolument un integer.
Je n'ai pas d'autre choix que de faire cela, j'ai déjà tester des requêtes à base de INSERT INTO et JOIN mais je suis un peu perdu. Quelqu'un aurait bien une idée de la formulation ?
Merci par avance !
Je souhaiterais de l'aide concernant une requête multiple qui nécessite de faire une jointure entre trois tables.
Les voici :
ps_orders
- id_order - INT
- payment - VARCHAR (qui comporte le nom de plsrs moyens de remboursement ex:paypal..)
payment_method
- id_payment_method - INT
- name - VARCHAR (comporte le nom de ces moyens de remboursement ex:paypal..)
order_refund
- id_order - INT
- id_payment_method - INT (ne comporte rien encore)
Je souhaite insérer dans la colonne id_payment_method deorder_refund une valeur numérique et qu'elle y soit associé à la méthode de remboursement associée.
Pour cela je dois,
récuperer l'id_order de order_refund et le comparer à celui de ps_orders, si ceux-ci sont identiques alors je récupère la méthode de remboursement associée ( - payment - varchar ) (de ps_orders) et la compare à celui de - name - (de payment_method) et récupère l'id associé. Je retourne celui-ci dans la colonne encore vierge ( - id_payment_method - de order_refund) qui attend absolument un integer.
Je n'ai pas d'autre choix que de faire cela, j'ai déjà tester des requêtes à base de INSERT INTO et JOIN mais je suis un peu perdu. Quelqu'un aurait bien une idée de la formulation ?
Merci par avance !
1 réponse
-
Bonjour,
Un insert c'est pour ajouter une nouvelle ligne, pour mettre à jour un champ c'est un update.
update order_refund AS ORD set id_payment_method = (select PM.id_payment_method from payment_method AS PM inner join ps_order as PS on PS.payment = PM.name where PS.id_order = ORD.id_order) where id_payment_method is null
Cdlt