[SQL] Probleme avec un "update" alambiqué...

Probleme avec un "update" alambiqué... [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 15-07-2002 à 16:23:09    

Je vous explique la chose.
 
j'ai deux tables. Je dois rechercher les doublons, en gros, les entreprises de la table A qui se trouvent deja dans la table B.
 
Jusque la, ca va.
 
je dispose du numero SIRET de chaque entreprise dans les deux cas.
 
Avec un select, je récupère facilement lesquelles sont dans les deux, avec une jointure banale.
 
La ou ca se corse, c'est que je veux mettre a jour la table A, en remplissant un champ jamais utilisé, pour me souvenir que cette entreprise de la table A se trouve aussi dans la table B.
 
En gros, remplir un champ bidon jamais utilisé de la table A, avec l'identifiant de la table B quand il y a correspondance.
 
mais j'arrive pas a faire le update...
 
Si je fais un truc style :
 
update TableA
Set Champbidon = TableB.cle
where TableA.numSiret IN ( select TableB.numSiret from TableB)
 
Forcément mossieur gueule...
 
Vous avez un moyen ? ( Je n'ai pas PL/SQL sinon ca aurait déjà été torché vous pensez bien :( )


Message édité par Tetedeiench le 15-07-2002 à 16:23:23

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 15-07-2002 à 16:23:09   

Reply

Marsh Posté le 15-07-2002 à 16:32:53    

i gueule quoi le mossieur?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 15-07-2002 à 16:33:27    

Il me semble que lorsque tu fais un UPDATE tu es obliger de SET tout les champs de la tables meme ceux ke tu veux pas modifié(faut leur remettre leur valeur d'origine au champs que tu ne veux pas modifier)


---------------
/!\ Post powered by Phive-online.com /!\
Reply

Marsh Posté le 15-07-2002 à 16:34:52    

Phive a écrit a écrit :

Il me semble que lorsque tu fais un UPDATE tu es obliger de SET tout les champs de la tables meme ceux ke tu veux pas modifié(faut leur remettre leur valeur d'origine au champs que tu ne veux pas modifier)



moi jcrois pas :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 15-07-2002 à 16:37:09    

--greg-- a écrit a écrit :

moi jcrois pas :o




Possible
je dis ca pour qu'il test qd meme  on sait jamais avec ce sql:D  
 
mais faudrait connaitre le message d'erreur en fait  :p


---------------
/!\ Post powered by Phive-online.com /!\
Reply

Marsh Posté le 15-07-2002 à 16:38:09    

Phive a écrit a écrit :

 
Possible
je dis ca pour qu'il test qd meme  on sait jamais avec ce sql:D  
 
mais faudrait connaitre le message d'erreur en fait  :p  



vé, c ske je demandais, mais il est pas tres reactif cte tetedeiench :)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 15-07-2002 à 16:43:50    

Il me met comme erreur qu'il ne trouve pas la colonne tableB.cle ... ce qui est normal vu qu'elle n'est pas dans le update ( d'ailleurs un update agencé comme ca me semble super bancal m'enfin... )


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 15-07-2002 à 16:47:03    

Tetedeiench a écrit a écrit :

Il me met comme erreur qu'il ne trouve pas la colonne tableB.cle ... ce qui est normal vu qu'elle n'est pas dans le update ( d'ailleurs un update agencé comme ca me semble super bancal m'enfin... )



de fait.


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 15-07-2002 à 17:17:23    

Impossible de faire une jointure avec une autre table dans le WHERE d'un update :(
 
Le seul truc que j'utilise pour contourner, c'est créer une nouvelle table temporaire (identique à celle que tu veux updater) et d'utiliser INSERT INTO (qui accepte les jointures entre 2 tables). Puis drop ou truncate de ton ancienne table, et réinsertion des données MAJ à partir de la table 'temporaire'. C'est un peu lourd, mais c'est le seul moyen sans PL/SQL.

Reply

Sujets relatifs:

Leave a Replay

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