Bonjour à tous,
Cela fait quelques heures que je bute sur une requête pas très compliquée en sois, mais qui visiblement dépasse mes compétences ou ma logique
Je cherche à modifier des prix sur une table en fonction d'une valeur présente dans une autre table.
Voici la partie qui met à jour en fonction de la valeur en question :
// La valeur qui permet le calcul du prix se situe dans le champ ps_atribute_lang.name entre des parenthèses
Code : Sélectionner tout - Visualiser dans une fenêtre à part SET ps_specific_price.price = ps_product.wholesale_price * (SELECT substring_index(substring_index(name, '(', -1),')', 1) FROM ps_attribute_lang WHERE ....
voici le schema des tables (uniquement ce qui nous intéresse):
ps_specific_price : id_product, id_product_attribute, price
ps_product : id_product, ps_product.wholesale_price
ps_product_attribute_combination : id_attribute, id_product_attribute
ps_attribute_lang : id_attribute, name
L'idée est donc de mettre à jour ps_specific_price.price en le multipliant par la valeur récupérée dans ps_attribute_lang.name
Voici mon brouillon de requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 UPDATE `ps_specific_price` INNER JOIN ps_product ON ps_specific_price.id_product = ps_product.id_product SET ps_specific_price.price = ps_product.wholesale_price * (SELECT substring_index(substring_index(name, '(', -1),')', 1) FROM ps_attribute_lang INNER JOIN ps_specific_price ON INNER JOIN ps_product ON ps_specific_price.id_product = ps_product.id_product INNER JOIN ps_product_attribute_combination ON ps_specific_price.id_product_attribute = ps_product_attribute_combination.id_product_attribute WHERE ps_specific_price.id_product = ps_product.id_product AND ps_specific_price.id_product_attribute = ps_product_attribute_combination.id_product_attribute AND ps_attribute_lang.id_attribute = ps_product_attribute_combination.id_attribute ) WHERE ps_specific_price.id_product = ps_product.id_product AND ps_specific_price.price <> -1
D'avance je vous remercie de votre aide.
Bonne journée
Romain
Partager