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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  UPDATE JOIN Oracle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

UPDATE JOIN Oracle

n°2060665
Tibar
Posté le 02-03-2011 à 14:52:21  profilanswer
 

Bonjour à tous,
 
Je rencontre un petit problème d'UPDATE sous Oracle, voila, j'ai 2 tables :  
 
INFO_MODULE (id_module, id_produit, date_deb_analyse)
SAISON (id_module, date_deb_saison, date_fin_saison)
 
Je dois mettre à jour date_deb_analyse avec (date_deb_saison - 1 an) si sysdate > date_fin_saison...
 
Ca me semblait tout bête, mais je ne m'en sors pas...
 
Voici le select :  
 
SELECT *
FROM INFO_MODULE IM
INNER JOIN SAISON SA ON SA.id_module = IM.id_module
WHERE trunc(SYSDATE) > SA.date_fin_saison
 
(bon, en l'état, cette requête me renvoit 0 ligne puisque aucun enregistrement de SAISON ne respecte la clause WHERE, donc je triche un peu et je remplace trunc(SYSDATE) par to_date('01/06/2011', 'DD/MM/YYYY')
 
==>  
 
SELECT *
FROM INFO_MODULE IM
INNER JOIN SAISON SA ON SA.id_module = IM.id_module
WHERE to_date('01/06/2011', 'DD/MM/YYYY') > SA.date_fin_saison
 
dans ce cas j'ai 97 id_module dans SAISON qui remplissent les critères, et ça me sort donc 1369 lignes de la table INFO_MODULE...
 
Mais je n'arrive pas à écrire l'UPDATE...
 
J'ai essayé de reprendre des UPDATE ou des MERGE que j'avais déjà écrit, mais ça ne passe jamais, si quelqu'un avait une idée...
 
Merci,

mood
Publicité
Posté le 02-03-2011 à 14:52:21  profilanswer
 

n°2060676
Tibar
Posté le 02-03-2011 à 15:16:11  profilanswer
 

Bon Ok, j'ai trouvé... (enfin, j'ai trouvé sur une page Web, je n'aurai jamais fait comme ça, venant de SQLServer...) :  
 
UPDATE INFO_MODULE IM
SET IM.date_deb_analyse =  
    (
    SELECT add_months(SA.date_deb_saison, -12)  
    FROM SAISON SA
    WHERE IM.id_module = SA.id_module
    )
WHERE EXISTS  
      (
      SELECT 1  
      FROM SAISON SA
      WHERE SA.id_module = IM.id_module  
      AND to_date('01/06/2011', 'DD/MM/YYYY') > SA.date_fin_saison
      )
 
Ca me met bien à jour 1369 lignes...


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

  UPDATE JOIN Oracle

 

Sujets relatifs
Dump d'une base oraclepb récupération de données sous oracle
Connexion Oracle 11g en ociLancer Oracle JPUBLISHER avec ANT (build.xml) ?
Problème avec la fonction update pour modifié une table d'un BDD [résoIntegrer un fichier dans une base oracle
[Oracle][Résolu] Récupérer refcursor d'une function Oracleformat date sous oracle
Probleme taille de log oracle[Oracle] Récupérer des informations sur les clés étrangères
Plus de sujets relatifs à : UPDATE JOIN Oracle


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