8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,voila j'aurai besoin d'éxecuter une sous requète avec un UPDATE genre ça :

 UPDATE t_produit set prix_promo='$bi' WHERE id= ( SELECT id FROM t_produit  WHERE etat_promo=1) 


Mais sql retourne l'erreur suivante :

You can't specify target table 't_produit' for update in FROM clause 


Et je vois pas comment faire autrement, vous avez une idée ?

Merci d'avance ^^
Modifié par wpcJack (24 Apr 2007 - 10:26)
Bonjour,

Pourquoi passer par une sous requête ?

Ceci ne correspondrait pas à tes attentes ?


UPDATE t_produit SET prix_promo='$bi' WHERE etat_promo=1; 


Bonne continuation.
Romain
Modifié par yodaswii (23 Apr 2007 - 12:02)
En fait je coche des cases qui mettent des produits en promo, donc etat promo à 1.

Et ensuite apres avoir coché cette case je veux donner un prix promo à ce produit coché.

Donc j'ai un formulaire avec une liste de tous les produits en base de donnée et des checkbox pour dire si le produit est en promo et le cas échéant une case prix pour donner le prix promo.

Donc ma requète doit insérer le bon prix promo pour le bon produit coché.

Avec ta requète il va prendre le dernier prix inséré dans le formulaire et le mettre à tous les produit en promo.

Il y a une boucle qui récupère les valeurs des checkbox (coché ou pas) et les valeurs des prix, puisque le formulaire affiche les checkbox et les case prix autant qu'il y a de produit voici la code source du bordel :

foreach ($_POST['promo'] as $k => $v) {

   $req2 = new requete($base, "UPDATE t_produit SET etat_promo='1' WHERE id='$v'");

}   
foreach ($_POST['prixbar'] as $s => $r) {

   $req3 = new requete($base, "UPDATE t_produit SET prix_promo='$r' WHERE id=( SELECT id FROM t_produit WHERE etat_promo=1)");
}


Je sèche la Smiley ohwell
Autre solution : ne pas utiliser de sous requête mais utiliser la clause IN.

Il suffit alors de construire la chaîne suivante :
'id_pdt1','id_pdt2','id_pdt3' ... et pour cette requête faire :
WHERE id IN ('id_pdt1','id_pdt2','id_pdt3');

En plus c'est beaucoup plus efficace : 1 requête au lieu de répéter plusieurs fois la même requête Smiley cligne !
Modifié par yodaswii (23 Apr 2007 - 16:04)
Pas de quoi. Cependant, pourrais-tu modifier le sujet de ton post :
remplacer [Réglé] par [Résolu] (ça permettra aux autres membres d'y accèder plus facilement par la recherche) Smiley cligne .
yodaswii a écrit :
Pas de quoi. Cependant, pourrais-tu modifier le sujet de ton post :
remplacer [Réglé] par [Résolu] (ça permettra aux autres membres d'y accèder plus facilement par la recherche) Smiley cligne .



Ha ok pas de problème Smiley cligne