Page 1 sur 1

Requête SQL sur une table avec recup info sur une autre tabl

Posté : 22 août 2012, 16:47
par lecer144
Bonjour,

j'ai une table vm_product qui contient entre autres :

une colonne product_id et une colonne product_discount_id

je voudrais passer la colonne product_discount_id à 0 si le prix du produit < 30 mais le prix du produit se trouve dans une autre table vm_product_price qui contient donc : product_id et product_price

euh ... faire un update dans une table, ça y est je sais faire mais là, sur 2 tables ... ça se complique un peu trop pour moi ...
si une âme charitable pouvait me donner un p'tit coup de main ...

Par avance merci

Re: Requête SQL sur une table avec recup info sur une autre

Posté : 22 août 2012, 17:22
par moogli
salut,

tu peux aussi faire deux requête ;)

sinon la solution qui semble pas mal c'est une procédure stockée qui fait l'update sur la table.

tu ajoute deux trigger pour lancer cette procedure automatiquement à l'insertion et mise à jour dans les deux tables.

comme ça au final tu n'a rien à faire :) (enfin si l'update de la table concernée :) ).

Il est possible d'utiliser la procédure stockée pour qu'elle ne porte que sur un seul produit (histoire de pas mettre à genoux le serveur quand tu change une prix ou ajout un produit).

Question en passant : ce champ est il vraiment utile ? cette condition étant calculable simplement (que ce soit en php ou en SQL).

@+

Re: Requête SQL sur une table avec recup info sur une autre

Posté : 22 août 2012, 21:57
par lecer144
en fait je voudrais faire l'update en un coup.
j'ai des produits qui ont une remise et je voudrais supprimer cette remise pour tous les produits qui ont un prix inférieur à 30€.
il y en a environ 200 dans ce cas ... je vais en avoir au moins pour 4 ou 5 heures si je dois faire ça produit par produit.
je vais faire une sauvegarde et tenter :

UPDATE vm_product set product_discount_id=0
WHERE (vm_product.product_id = vm_product_price.product_id) AND (vm_product_price.product_price < 30)

Re: Requête SQL sur une table avec recup info sur une autre

Posté : 22 août 2012, 23:58
par lecer144
Bon bah ca marche pas :(

Unknown column 'vm_product_price.product_id' in 'where clause'

mais ça ça fonctionne :D :

UPDATE vm_product set product_discount_id=0
WHERE product_id IN (SELECT product_id
FROM vm_product_price
WHERE product_price < 30)