Pb sql

Résolu
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008 - 6 avril 2005 à 10:15
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 7 avril 2005 à 21:27
voila mon pb, j'ai 2 tables paradox et je voudrais mettre dans la
premiere les valeur du champ [current] ds la 2em la ou les 2 champs
[idnumber] sont identiques. mais...ca marche pas, qd je lance, le prog
tourne a l'infini sur le execsql

(qd je mets products.db a la place de product, ca change rien), une idee !?

merci




UPDATE 'c:\hbdemo2\products' LEFT JOIN 'c:\hbdemo\products' SET
'c:\hbdemo2\products'.current = 'c:\hbdemo\products'.current WHERE
'c:\hbdemo\products'.IdNumber = 'c:\hbdemo2\products'.IdNumber


exyacc

8 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
6 avril 2005 à 20:17
Tu as parfaitement raison, la requête n'est pas bonne.
Elle est même à simplifier :
update salon S
set S.current = (select B.current from bureau B
where A.IdNumber = B.IdNumber)

Je te laisse traduire cette requête en code compréhensible par Delphi comme tu l'as fait ci-dessus et remplacer les mots en italique.

"je comprends pas UPDATE 'c:\hbdemo2\products' A , il est affecté qd ce A ?"

A est un alias déclaré pour alléger le code de la requête et la rendre plus lisible pour un humain.

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.pourflorenceethussein.org
3
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008
6 avril 2005 à 11:35
apres redemarrage j'ai un message d'erreur... "utilisation incorecte du mot clé LEFT" ....

mais si je mets autre chose INNER JOIN, etc. , tjs meme message, donc je pense plutot qu'il aime pas mon chemin.... :(
exyacc
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
6 avril 2005 à 12:36
Sauf erreur (je n'ai pas vérifié), la requête suivante devrait correspondre à ce que tu veux faire :
UPDATE 'c:\hbdemo2\products' A
set A.current = B.current
where
(
select B.IdNumber from 'c:\hbdemo\products' B
where A.IdNumber = B.IdNumber
)
Sinon, tu peux aussi tenter ta chance sur http://www.sqlfr.com

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.pourflorenceethussein.org
0
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008
6 avril 2005 à 14:31
j'ai donc mis


chaine:='UPDATE '+quotedstr(salon)+' A set
A."current" = B."current" where ( select B.IdNumber from
'+quotedstr(salon)+' B where A.IdNumber = B.IdNumber )';



avec
buro:='c:\shortcuts\hbdemo2\products';

salon:='c:\shortcuts\hbdemo\products';



mais me met message erreur mot clé ) .....



je comprends pas UPDATE 'c:\hbdemo2\products' A , il est affecté qd ce A ?

j'ai regardé sur sqlfr car j'ai vu ton message sur un autr post d'un
gars qui avait aussi un pb de syntaxe SQL... ;o) mais a chaque fois que
je trouve des choses sur UPDATE , ce sont des requetes qui prennent en
compte a chaque fois qu'une seule table et pas une table qui met a jour
une autre...du moins pas trouvé... :(


exyacc
0

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

Posez votre question
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008
6 avril 2005 à 14:49
heu le 2em (salon) c'est (bureau) en fait... ;)

exyacc
0
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008
7 avril 2005 à 09:11
impec ca marche, merci beaucoup.

en fin de compte faut que j'arrete de faire mes requetes sous access
pour qu'il les traduise en SQL pour avoir une idee de la forme a ecrire
car pas du tout la meme chose... ;o)

exyacc
0
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008
7 avril 2005 à 11:05
au fait, pourquoi on peut pas faire de jointure avec un update ?
parceque la, pour une table de 4000 enregistrement il met 3 minutes....

exyacc
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
7 avril 2005 à 21:27
Dans le cas d'un update, il n'est pas possible de faire une jointure.
Un update ne peut mettre à jour qu'une seule table à la fois.

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.pourflorenceethussein.org
0
Rejoignez-nous