[SQL] Erreur avec UPDATE

fredo78310 Messages postés 69 Statut Membre -  
 toto -
Bonjour,

j'ai une erreur avec cette requête que je n'arrive pas à contourner :

UPDATE dap
SET dap.numCC = da.numCC
WHERE dap.numCh = da.numCh;



La réponse est de MySQL est :

MySQL a répondu:
#1109 - Table inconnue 'da' dans where clause



Je comprends qu'il ne me trouve pas la table 'da' car il n'y a pas de FROM comme dans un SELECT... Mais je ne vois pas comment faire en sorte que ça marche...
Je pense que la requête est claire sur ce que je souhaite faire... Si y'a besoin de plus d'explications, y'a pas de problème...


Merci d'avance !!
A voir également:

9 réponses

toto
 
Bonjour

Si j'en crois mon manuel mysql, depuis la version 4.04, mysql accepte :
UPDATE dap,da
SET dap.numCC = da.numCC
WHERE dap.numCh = da.numCh;
0
fredo78310 Messages postés 69 Statut Membre 5
 
Sachant que j'ai MySQL 3.23.49, ça ne fonctionne pas, pour preuve voici l'erreur retournée :


#1064 - Something is wrong in your syntax près de
' da SET dap.numCC = da.numCC WHERE da'
à la ligne 1


Si tu as d'autres idées ou quelqu'un d'autre, je suis preneur !!
0
Droopy_ Messages postés 252 Statut Membre 25
 
Es-tu sûr que MySQL en version 3 soit capable de faire des update multitable ??? Je crois que ça viens avec la version 4. Mais je peux me tromper...
0
toto
 
Faire une requête pour extraire tous les numCC,numCh de la table da
Puis une boucle qui met à jour la table dap pour chacun des enregistrement trouvés ci-dessus.

Beaucoup moins élégant et efficace que la solution en une seule requête, évidemment
0
fredo78310 Messages postés 69 Statut Membre 5
 
Je n'ai jamais fait de boucle en SQL, je le faisais toujours en PhP, mais là je dois le faire en SQL...
Tu pourrais m'aider en me montrant la structure stp ??
0
Cisco
 
ESSAYE CA:

UPDATE dap
SET dap.numCC = da.numCC
FROM dap
INNER JOIN da ON dap.numCh = da.numCh;
0
fredo78310 Messages postés 69 Statut Membre 5 > Cisco
 
Voici l'erreur retournée :

#1064 - Something is wrong in your syntax près de
'FROM dap INNER JOIN da ON dap.numCh = da.nu'
à la ligne 3


Je pense que c'est le FROM qu'il n'aime pas, la seule chose qu'il veut attendre c'est un WHERE ou rien, à mon avis...

Merci quand même...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
toto
 
Je ne pensais pas à une boucle en mysql. Je pensais bien à une boucle en PHP. Il y a quelque chose qui t'interdit d'écrire un petit script ?
0
fredo78310 Messages postés 69 Statut Membre 5
 
Techniquement, je peux le faire en PhP sans problème... Mais moralement, ça ne passe pas très bien parce que ça ne dépend pas que de moi... Trop long à expliquer...
Bref, il me faut résoudre ce problème uniquement en SQL...
0
deglingo592003 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
salut a toi

et si tu exécuter ça avec une sous requête du genre

UPDATE dap
SET dap.numCC = da.numCC
WHERE dap.numCh = (SELECT numCh FROM da WHERE ... ;) ;
0
toto
 
Tu pourrais aussi essayer "abracadabra".
Après tout, moi aussi j'ai le droit de proposer n'importe quoi.
0
deglingo592003 Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   11
 
si c'est pour moi cette dernière réponse, j'essaye juste de guider je n'est peut être pas la solution exacte ou peut être pas du tout une bonne réponse mais c'est pas ce dernier commentaire qui fera avancer les choses

j'essaye juste d'amener mon petit grain de sel

je proposait ça juste dans un soucis du problème premier qui était de "comment lui faire trouver la table da"

désolé d'avoir essayé ...
0
toto
 
désolé d'avoir essayé
Justement, si tu avais essayé, tu n'aurais pas fait cette proposition. Tu essayais de guider fredo vers quoi ? Tu ne sais pas toi même. La requête que tu proposais perpétuait l'erreur précédente (utiliser la table da, inconnue au niveau du SET).
Je n'ai rien contre toi personnellement. Mais je vois beaucoup trop de 'suggestions' farfelues sur ce forum.
Je crois qu'il faudrait que les gens comprennent que le fait d'être de bonne volonté (car tu l'es, je n'en doute pas) les dispense d'être rigoureux.
0
toto
 
Oups... Il fallait lire "ne les dispense pas", bien sûr.
0