[SQL]aide sur une requete d'update

aide sur une requete d'update [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 14-04-2005 à 10:09:14    

j'ai une requete d'update a faire mais ça ne marche pas (evidement... :heink:  ). Donc je m'explique :
j'ai 2 tables emploi, et contrat:
- contrat : ident,objectif
- emploi : ident
 
je voudrai que quand on retrouve un ident present ds les 2 tables, la valeur de objectif de la table contrat prenne la chaine de caractere 'emploi'.
 
ça c'est ce que j'ai fait, je pense que c'est a refaire lol:

Code :
  1. UPDATE CONTRAT
  2.               SET    contrat.OBJECTIF = 'emploi'
  3.               WHERE  ident = (SELECT  ident
  4.                                     FROM   CONTRAT C
  5.                                     JOIN EMPLOI E
  6.                                     ON E.IDENT = C.IDENT)

Reply

Marsh Posté le 14-04-2005 à 10:09:14   

Reply

Marsh Posté le 14-04-2005 à 10:20:26    

albertos a écrit :

j'ai une requete d'update a faire mais ça ne marche pas (evidement... :heink:  ). Donc je m'explique :
j'ai 2 tables emploi, et contrat:
- contrat : ident,objectif
- emploi : ident
 
je voudrai que quand on retrouve un ident present ds les 2 tables, la valeur de objectif de la table contrat prenne la chaine de caractere 'emploi'.
 
ça c'est ce que j'ai fait, je pense que c'est a refaire lol:

Code :
  1. UPDATE CONTRAT
  2.               SET    contrat.OBJECTIF = 'emploi'
  3.               WHERE  ident = (SELECT  ident
  4.                                     FROM   CONTRAT C
  5.                                     JOIN EMPLOI E
  6.                                     ON E.IDENT = C.IDENT)



 
Euh ... plus simple ... :o
 

UPDATE contrat
  SET contrat.objectif = 'emploi'
FROM contrat, emploi
WHERE  contrat.ident = emploi.ident


un truc dans le genre  :o


Message édité par Zzozo le 14-04-2005 à 10:20:44
Reply

Marsh Posté le 14-04-2005 à 11:53:34    

merci mais ça n'a pas l'air de fonctionner  
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 13.
FROM.
 
(c'est sur Interbase de Borland)

Reply

Marsh Posté le 14-04-2005 à 12:23:43    

albertos a écrit :

merci mais ça n'a pas l'air de fonctionner  
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 13.
FROM.
 
(c'est sur Interbase de Borland)


Je ne me rappelle plusde Interbase ... mais ce que j'ai mis c'est du SQL assez, voire complètment "standard"
Evetuellement rajoutes un ; à la fin de la ligne SET
 
Oublies pas de te positionner au préalable sur la bonne base (avec un USE <nom de la base>, encore que avec Interbase je sais pas), si ton user n'a pas la bonne base par défaut

Reply

Marsh Posté le 21-04-2005 à 09:49:27    

je sais que ce genre de requete ne marche pas sous mysql car il n'accepte pas les sous requete avec UPDATE, mais normalement sur Interbase, il ne devrait pas y avoir de probleme...
 
en tout cas je suis dans le meme cas que toi, je cherche une solution...


---------------
Je sais ce qui ne va pas dans ce pays, nous dépensons un fric que nous n'avons pas pour acheter des choses dont nous n'avons pas besoin pour impressionner des gens que nous n'aimons pas...
Reply

Marsh Posté le 21-04-2005 à 10:16:05    

Si la sous-requête ne fonctionne pas dans Interbase, essaie un truc du genre :
 

UPDATE CONTRAT
SET    contrat.OBJECTIF = 'emploi'
WHERE  ident IN (SELECT  ident
FROM   CONTRAT C
JOIN EMPLOI E
ON E.IDENT = C.IDENT)

Reply

Marsh Posté le 21-04-2005 à 10:18:10    

La solution de zzozo ne me dit rien de bon. En tout cas, avec Orak, ça ne passe pas non plus.
 
Par contre, ta commande originale pourrait marcher, mais je pense que dans ton select imbriqué, tu fais appel à "contrat C", qui n'est pas la même table que dans "UPDATE Contrat" !
 
Essaye "UPDATE Contrat C" à la place pour voir. Simple idée comme ça, je ne suis pas un SQL master.
 
Par "ça ne marche pas", tu entends quoi ? Peux-tu être plus précis ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 21-04-2005 à 10:39:19    

albertos a écrit :

j'ai une requete d'update a faire mais ça ne marche pas (evidement... :heink:  ). Donc je m'explique :
j'ai 2 tables emploi, et contrat:
- contrat : ident,objectif
- emploi : ident
 
je voudrai que quand on retrouve un ident present ds les 2 tables, la valeur de objectif de la table contrat prenne la chaine de caractere 'emploi'.
 
ça c'est ce que j'ai fait, je pense que c'est a refaire lol:

Code :
  1. UPDATE CONTRAT
  2.               SET    contrat.OBJECTIF = 'emploi'
  3.               WHERE  ident = (SELECT  ident
  4.                                     FROM   CONTRAT C
  5.                                     JOIN EMPLOI E
  6.                                     ON E.IDENT = C.IDENT)



 
 
tiens essai cette requete peut etre... je pense que ca devrait marcher! en tout cas moi ca marche sous mysql...

Code :
  1. UPDATE contrat c, emploi e SET c.objectif='emploi' WHERE c.ident = e.ident;


Message édité par Maitre Obiwan le 21-04-2005 à 10:39:48

---------------
Je sais ce qui ne va pas dans ce pays, nous dépensons un fric que nous n'avons pas pour acheter des choses dont nous n'avons pas besoin pour impressionner des gens que nous n'aimons pas...
Reply

Sujets relatifs:

Leave a Replay

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