aide requête sql updateen fonction champ autre table

aide requête sql updateen fonction champ autre table - SQL/NoSQL - Programmation

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

Reply

Marsh Posté le 26-10-2013 à 16:06:39   

Reply

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 !

Reply

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.


---------------
C'était vraiment très intéressant.
Reply

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


Message édité par cockpitinferno le 26-10-2013 à 16:50:12
Reply

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  
WHERE id_product IN (SELECT id_product FROM product_lang WHERE description = 'Délai de livraison: 8 à 10 jours sous réserve de disponibilité');

Apparemment MySQL permet aussi de le faire en passant par une jointure, a tester:

UPDATE product p, product_lang pl  
SET p.quantity = 0  
WHERE p.id_product = pl.id_product  
  AND pl.description = 'Délai de livraison: 8 à 10 jours sous réserve de disponibilité';

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.


---------------
C'était vraiment très intéressant.
Reply

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

Reply

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.

Reply

Marsh Posté le 02-11-2013 à 22:15:08    

merci la 1ère requête fontionne parfaitement. j'ai pu modifier plein de trucs.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed