Chris_LaFouine
Messages postés109Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention 4 juin 2008
-
11 mai 2006 à 11:42
BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 octobre 2014
-
12 mai 2006 à 17:35
Bonjour,
Je voudrais savoir comment mettre à jour une table à partir des données d'une autre table. Je m'explique...
J'ai une table A et une table B. Je me suis rendu compte que les champs de B peuvent s'insérer dans A, ce qui me permettra par la suite de virer la table B. Dans ma table A, j'ai 3 champs [a,b,c] qui correspondent aux champs [x,y,z] de la table B que je veux faire passer dans la table A (sachant que A et B ont un même identifiant [i]. Donc je cherche à faire une requête UPDATE qui va m'affecter les valeurs de [x,y,z] dans [a,b,c]. Voilà la requête que j'ai fait :
UPDATE A,B
SET A.a=B.x, A.b=B.x, A.c=B.z
WHERE A.i=B.i
Bien entendu, elle ne fonctionne pas... après quelques réflexions, je comprends pourquoi elle ne fonctionne pas et je me suis dit qu'il faut peut-être faire intervenir une sous-requête... mais j'en suis pas sûr! Sinon, petite précision, j'utilise MySQL 5!
Chris_LaFouine
Messages postés109Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention 4 juin 2008 12 mai 2006 à 16:59
Je viens de tester à l'instant la requête suivante sous MySQL :
update A join B on (A.i = B.i)
SET A.a=B.x, A.b=B.x, A.c=B.z
Malheureusement, ça ne fonctionne pas... MYSQL accepte la requête mais aucun champ n'est mis à jour. J'ai donc essayé plus simple :
update A join B on (A.i = B.i)
SET A.a='Poulet'
Et là, surprise, ça fonctionne! Enfin, en partie! En effet, seulement le premier enregistrement de A.a a été mis à jour! J'ai essayé aussi la solution que préconise aieeeuuuuuu dans ton lien en faisant :
UPDATE A
SET A.a = (
SELECT x
FROM B
WHERE A.i = B.i
)
Mais ça ne fonctionne pas plus... Je pense que MYSQL a du mal avec les update à jointure! Si vous avez d'autres propositions, je suis preneur!