Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
458 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  faire un update avec une jointure oracle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

faire un update avec une jointure oracle

n°1172268
olicel
Posté le 08-08-2005 à 11:56:49  profilanswer
 

bonjour,
 
j'ai besoin d'un coup de pouce pour ma requete SQL.
J'ai table1 avec colonne NO_MSG, CLE, VAL et table 2 avec NO_MSG, CODE_ERR
 
Je voudrais update la colonne VAL de la table1 lorqsue table1.NO_MSG=table2.NO_MSG and COE_ERR='E'.
 
J'ai tenté ca mais ca marche pas... ca s'execute mas 5H apres la requete est tj pa fini ..
update table1 set VAL='I' where (select 1 from table1, table2 where CODE_ERR='E' and table1.NO_MSG=table2.NO_MSG)
 
une petite correction svp ;-)
 
merci
 
olivier
 
PS: je suis sous oracle 8.1.7


Message édité par olicel le 08-08-2005 à 11:57:03
mood
Publicité
Posté le 08-08-2005 à 11:56:49  profilanswer
 

n°1172273
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-08-2005 à 12:01:49  profilanswer
 

déjà, "where exists" sera mieu (rajoute simplement le "exists" )
 
sinon, avec sql server, il y a une syntaxe permettant de faire directement une jointure lors de l'update. ce n'est pas la même syntaxe mais bon, ça te donne au moins l'info :
 
update table1
set val = 'I'
from table2
where no_msg = table2.no_msg
and table2.code_err = 'E'

n°1172303
olicel
Posté le 08-08-2005 à 12:36:23  profilanswer
 

oui je mettais le existe ;-) oublié de le mettre sur le forum.
voici une copie de ma requete... mais ca marche pas ca met 2000plombes... et ca se debloque jamais.

n°1172304
olicel
Posté le 08-08-2005 à 12:36:37  profilanswer
 

update HOSTCOM_MSG_DETAIL set VAL='I' where exists
(select 1 from HOSTCOM_MSG_DETAIL d, HOSTCOM_MSG_RECU m where d.VAL='R' and m.ETAT_MSG='E' and m.MSG_ERR LIKE '%ORA-20178%' and d.CLE='I_PV1_CLASS' and d.NO_HOSTCOM_MSG=m.NO_HOSTCOM_MSG)

n°1172321
orafrance
Posté le 08-08-2005 à 13:05:29  profilanswer
 

essaye :
 

Code :
  1. update HOSTCOM_MSG_DETAIL d set VAL='I' where exists
  2. (select 1 from HOSTCOM_MSG_RECU m where d.VAL='R' and m.ETAT_MSG='E' and m.MSG_ERR LIKE '%ORA-20178%' and d.CLE='I_PV1_CLASS' and d.NO_HOSTCOM_MSG=m.NO_HOSTCOM_MSG)

n°1172324
olivthill
Posté le 08-08-2005 à 13:09:52  profilanswer
 

A mon avis, il te manque une condition supplémentaire dans ton WHERE, parce que là, tu vas mettre 'I' partout ou nul part, selon que ton sous-select sera vrai ou faux.

n°1172390
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-08-2005 à 14:13:16  profilanswer
 

en effet, la solution d'OraFrance me semble mieu, celle d'olicel est buggée en effet !

n°1172397
olicel
Posté le 08-08-2005 à 14:19:36  profilanswer
 

c bon j'ai tenté celle d'orafrance, et j'ai compris ma betise. merci a tous


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  faire un update avec une jointure oracle

 

Sujets relatifs
[ORACLE]Importance de l'OS du serveur ?oracle group by
UPDATE d'une table à partir d'un formulaireupdate sur ttes mes tables commençant par "IT_"
[SQL - ORACLE] Faire un somme de count sur plusieurs tables[MySQL] Update multitables
[PHP/MySQL] update avec reprise de l'ancienne valeur d'un champ[Oracle et OCI] Table ou vue inexistante
Selectionner un id dans une jointureProcedure Stockée en Java sous Oracle 9.2
Plus de sujets relatifs à : faire un update avec une jointure oracle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR