IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Update avec une jointure externe


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Points : 121
    Points
    121
    Par défaut Update avec une jointure externe
    Bonjour,

    j'aurais besoin de mettre à jour un champ grâce à une valeur récupérée d'une autre table.

    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    update invoice left outer join EXCHANGE_RATE_MONTH_RMB
                on EXCHANGE_RATE_MONTH_RMB.FROM_CURRENCY_CODE = 'EUR'
                and EXCHANGE_RATE_MONTH_RMB.TO_CURRENCY_CODE = 'RMB'
                and invoice_date between EXCHANGE_RATE_MONTH_RMB.BEGIN_DATE and EXCHANGE_RATE_MONTH_RMB.END_DATE
    set invoice.cost_price = cost_price * EXCHANGE_RATE_MONTH_RMB.EXCHANGE_RATE
    where invoice.invoice_date < '31/12/2009';
    Le code est "bon" càd que je récupère bien (dans la théorie) les informations dont j'ai besoin.
    Par contre, j'obtiens un message d'erreur :
    ORA-00971: mot-clé SET absent
    En faisant quelques petites recherches, il semblerait que ça ne soit pas trop possible de faire de cette manière. Donc, comment est-ce que je suis censé faire ça ?

    Merci bien !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    En utilisant MERGE
    Que donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    merge into invoice i
    using (select EXCHANGE_RATE, BEGIN_DATE, END_DATE
             from EXCHANGE_RATE_MONTH_RMB
            where FROM_CURRENCY_CODE = 'EUR'
              AND TO_CURRENCY_CODE = 'RMB') u
       on (i.invoice_date BETWEEN u.BEGIN_DATE AND u.END_DATE)
     when matched then update
      SET i.cost_price = i.cost_price * u.EXCHANGE_RATE
    WHERE i.invoice_date < to_date('31/12/2009','dd/mm/yyyy')

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Points : 121
    Points
    121
    Par défaut
    C'est parfait merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Update avec une jointure
    Par widedouche dans le forum SQL
    Réponses: 3
    Dernier message: 04/06/2012, 09h45
  2. [BO XIR2] Problème avec une jointure externe
    Par Fouinto dans le forum Designer
    Réponses: 6
    Dernier message: 13/01/2011, 17h19
  3. Update avec une jointure
    Par Tinfolley dans le forum SQLite
    Réponses: 2
    Dernier message: 17/11/2009, 13h10
  4. Une requête avec des jointures externes
    Par Sopra dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/07/2009, 17h28
  5. [DB2] Problèmes avec une Jointure externe sur des vues
    Par treivse dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/07/2006, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo