aide requête sql updateen fonction champ autre table - SQL/NoSQL - Programmation
Marsh Posté le 26-10-2013 à 16:34:53
Bonjour !
Votre description du problème est insuffisante : Vous voulez mettre un champ à 0 dans tous les enregistrements d'une table en fonction de la valeur d'un champ dans un enregistrement d'une autre table ...
Quel doit être le lien entre les enregistrement des deux tables ? (quelle est la clé de jointure ?)
Bonne continuation !
Marsh Posté le 26-10-2013 à 16:36:51
Il faut plus de details sur:
- quel base de donnees (vu que la syntaxe va probablement etre differente selon la BDD)
- ton modele de donnees. A minima: comment tu relies un enregistrement de ta table1 a un de ta table2 (ca n'est pas visible dans ton code).
D'autre part, meme sans savoir quelle BDD tu utilises, la syntaxe de ton bout de code a l'air incorrecte: pas de quote ouvrante pour " table2.champdb' ", parenthese fermante a la fin alors que nulle part il y en a une d'ouvrante... Si ca fait partie d'un bloc de code plus gros, a la limite ca serait plus comprehensible pour nous si tu copies le tout.
Marsh Posté le 26-10-2013 à 16:47:52
c'est sur une base prestashop. en fait je souhaite remettre à 0 toutes mes quantités de mes produits sur commande.
mais je ne sais pas quelle est la clé de jointure.
pour être plus clair:
quand produit pas en stock, il y a possibilité de le commander quand même et le champ texte indique le message que vous souhaitez
mais avant je n'utilisais pas ca. je mettais du stock tout le temps et je changeais le message individuellement pour chaque produit
et maintenant je suis obligée de tout modifier pour pouvoir utiliser cette fonctionnalité.
pour ceux qui connaissent presta ca se joue entre la table product_lang et la table product
Marsh Posté le 26-10-2013 à 19:02:51
K, je connais pas Prestashop mais le MDD est trouvable sur leur site (http://doc.prestashop.com/download/attachments/1409078/prestashop-datamodel.png), et ca a l'air d'etre en MySQL.
Du coup pour faire ce que tu demandes, je connais peu MySQL et jusqu'ou ca respecte la norme SQL, mais a priori au moins ceci devrait marcher:
UPDATE product SET quantity = 0 |
Apparemment MySQL permet aussi de le faire en passant par une jointure, a tester:
UPDATE product p, product_lang pl |
Maintenant vu la gueule du MDD, j'ai pas l'impression que tu te serves des tables product/product_lang de maniere appropriee, mais bon ne connaissant pas le produit je peux me tromper.
Marsh Posté le 28-10-2013 à 07:41:44
Il faut mettre table1 join table2 on ( ... ) en mysql . Sinon il fait un produit des tables.. et vla le temps que ça prend
Marsh Posté le 28-10-2013 à 22:23:07
je verrais ca demain un peu plus reveillée. je viens de mettre tout mon site à jour donc j'ai encore pas mal de détails à fignoler et ensuite je m'attaque à nouveau a ce morceau. merci pour vos messages.
Marsh Posté le 02-11-2013 à 22:15:08
merci la 1ère requête fontionne parfaitement. j'ai pu modifier plein de trucs.
Marsh Posté le 26-10-2013 à 16:06:39
Bonjour,
après maintes recherches sur le wen je reste sans réponse,
je souhaiterais mettre à jour une quantité d'un champ a d'une table 1 en fonction du texte contenu dans le champ b d'une table2.
j'ai cherché partout et essayé plusieurs trucs mais je n'arrive pas à bien comprendre ce que je fait et du coup ca ne marche pas car j'y vais un peu au pif.
j'ai essayé ca:
UPDATE 'table1' SET 'quantity'='0' WHERE table2.champb' = 'Délai de livraison: 8 à 10 jours sous réserve de disponibilité')
mais ca ne fonctionne pas
est ce que qqun pourrait me donner la bonne syntaxe svp.
merci