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 :

Problème Update requêtes imbriquées


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 21
    Par défaut Problème Update requêtes imbriquées
    Bonjour à tous,

    J'ai besoin d'un peu d'aide, j'essaie de faire un update par rapport à un select que j'ai. Je sèche un peu sur la syntaxe et comment adapter tout ça. En gros je veux faire une retro alimentation d'une table sur plusieurs colonnes.
    j'ai fait la requête pour avoir toutes les lignes (données) qui me serviront pour la mise à jour.
    voilà mon code sql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT SG_NETKPI.CALLID, Max(SG_NETKPI.OPERATEUR) AS OPERATEUR, Max(SG_NETKPI.ACCES_ORIGINE) AS ACCES_ORIGINE, Max(SG_NETKPI.ZONE_ORIGINE) AS ZONE_ORIGINE, Max(SG_NETKPI.DPT) AS DPT
    FROM SG_NETKPI 
    WHERE (
    (SG_NETKPI.LEG='TLEG') AND ((SG_NETKPI.OPERATEUR Is Not Null) OR (SG_NETKPI.ACCES_ORIGINE Is Not Null) OR (SG_NETKPI.ZONE_ORIGINE Is Not Null) OR (SG_NETKPI.DPT Is Not Null))
    ) AND KPI_MONTH BETWEEN '201801' AND '201809'
    GROUP BY SG_NETKPI.CALLID;
    A_ALIMENTER je vais appeler comme ça la table suite à ma requête SQL plus haut.

    voilà mon code update:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE SG_NETKPI INNER JOIN A_ALIMENTER
    ON SG_NETKPI.CALLID = A_ALIMENTER.CALLID 
    SET _SG_NETKPI.OPERATEUR = A_ALIMENTER.OPERATEUR, 
    SG_NETKPI.ACCES_ORIGINE = A_ALIMENTER.ACCES_ORIGINE, 
    SG_NETKPI.ZONE_ORIGINE = A_ALIMENTER.ZONE_ORIGINE, 
    SG_NETKPI.DPT = A_ALIMENTER.DPT;
    Je ne sais pas comment faire marcher mon update. Comment faire ma jointure entre mon SQL et le UPdate.
    Si quelqu'un peut m'aider. Merci d'avance.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Regardez du côté de MERGE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     merge into sg_netkpi   tgt
     using (<votre select>) src
        on (src.callid = tgt.callid)
      when matched then update
       set tgt.OPERATEUR     = src.OPERATEUR
         , tgt.ACCES_ORIGINE = src.ACCES_ORIGINE
         , tgt.ZONE_ORIGINE  = src.ZONE_ORIGINE
         , tgt.DPT           = src.DPT;
    Edit : AS dans les alias de table et requête supprimés.

  3. #3
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 21
    Par défaut
    Merci Waldar, je vais essayer ce que tu me conseilles là!
    je te redis.

  4. #4
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 21
    Par défaut
    Hello Waldar, alors j'ai essayé avec le merge mais ça ne marche pas, j'ai un problème de syntaxe je pense. car j'ai une erreur oracle QL : ORA-02012: missing USING keyword
    02012. 00000 - "missing USING keyword"

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Essayez en enlevant les "as" avant tgt et src :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     merge into sg_netkpi   tgt
     using (<votre select>) src
        on (src.callid = tgt.callid)
    ...

  6. #6
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 21
    Par défaut
    ma requête seule me renvoie des données, par contre quand je la met dans le MERGE j'ai une erreur oracle sur la syntaxe.

  7. #7
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 21
    Par défaut
    oracle signale une erreur sur le as tgt comme s'il ne veut pas qu'on donne un nom à la table, il veut que je mettes directement USING après le as

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    merge into sg_netkpi   as tgt
     using (ma requête) as src
        on (src.callid = tgt.callid)
      when matched then update
       set tgt.OPERATEUR     = src.OPERATEUR
         , tgt.ACCES_ORIGINE = src.ACCES_ORIGINE
         , tgt.ZONE_ORIGINE  = src.ZONE_ORIGINE
         , tgt.DPT           = src.DPT;

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

Discussions similaires

  1. Problème Update requêtes imbriquées
    Par freaka75 dans le forum SQL
    Réponses: 3
    Dernier message: 18/01/2019, 17h30
  2. problème sur requête imbriqué
    Par Dam1en dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/10/2007, 16h55
  3. problème de requête imbriquées
    Par Invité dans le forum SQL
    Réponses: 11
    Dernier message: 30/07/2007, 08h51
  4. [MySQL] problème de requête imbriquée
    Par amarcil dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/04/2007, 15h04
  5. [MySQL] problème de requêtes imbriquées
    Par xave dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/01/2007, 13h30

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