Requête multiple sur plusieurs tables
Résolu
emmmmmy
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
emmmmmy Messages postés 22 Date d'inscription Statut Membre Dernière intervention -
emmmmmy Messages postés 22 Date d'inscription Statut Membre Dernière intervention -
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 !
A voir également:
- Sql jointure multiple
- Paris multiple 2/6 explication ✓ - Forum Loisirs / Divertissements
- Paris multiple 2/5 explication ✓ - Forum Loisirs / Divertissements
- Jointure sql ✓ - Forum MySQL
- Ecran multiple pc - Guide
- Excel cellule choix multiple - Guide
1 réponse
Bonjour,
Un insert c'est pour ajouter une nouvelle ligne, pour mettre à jour un champ c'est un update.
Cdlt
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
jee pee
Messages postés
41513
Date d'inscription
Statut
Modérateur
Dernière intervention
9 716
ou
emmmmmy
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
Dans mes fichiers de migrations, les requêtes sont sous forme d' INSERT mais je pense qu'il est mieux de passer par un UPDATE effectivement. Votre solution est intéressante merci beaucoup, je vais la tester.