Bonjour,

C'est un sujet qu'on trouve à la pelle sur internet mais malgré tous mes essais je ne me sors pas de ce problème.

Je suis en train de faire des reprises de données en passant par une base en Oracle 11g.

J'essaye de mettre à jour une zone clef d'une table par une valeur se trouvant dans une autre table.

J'ai essayé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
UPDATE X3_ITMFACILIT ITF 
SET ITF.ITMREF = (select ITM.ITMREF from X3_ITMMASTER ITM where ITM.CODE_SOC1 = ITF.OLDCOD);
where ITF.STOFCY= 'SOR';
Là j'avais une erreur en valeur NULL.

Ok le code n'était pas très claire.
J'ai donc fait ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
update X3_ITMFACILIT 
set ITMREF = ITM.ITMREF 
from X3_ITMFACILIT ITF 
join X3_ITMMASTER ITM 
on (ITF.OLDCOD = ITM.CODE_SOC1) 
where ITF.STOFCY= 'SOR';
Là j'ai un ORA-00933 sur SQL qui ne se termine pas correctement

Et j'ai donc terminé par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
UPDATE
(
 select 
        ITF.ITMREF,
        ITM.ITMREF 
 from 
      X3_ITMFACILIT ITF
      left outer join X3_ITMMASTER ITM
      on (ITF.OLDCOD = ITM.CODE_SOC1)
      Where ITF.STOFCY= 'SOR' 
)
SET ITF.ITMREF = ITM.ITMREF;
Et là j'ai une erreur ORA-00904 comme quoi mon ITM.ITMREF identificateur invalide

Je ne sais pas trop à quel bord me raccrocher, si quelqu'un aurait une idée !
Merci par avance