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 :

Merge filtré avec une clause WHERE


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut Merge filtré avec une clause WHERE
    Bonjour,

    Je dois restaurer une table à partir d'une sauvegarde, mais ma requête n'est pas franchement optimisée,
    je crois qu'elle le fait sur toute la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Id_question | id_codeuai | reponse_N | reponse_N1 ....
    1                 25001          10             11
    2                 25001          11             0
    3                 27002          12             3
    la clef primaire est basée sur id_question et id_codeuai.

    J'ai fais la requête suivante

    REPONSES est la tables d'origine et REPONSES_SAUV la sauvegarde.
    Je voudrais simplement mettre à jour la question dont l(ID est 56 par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MERGE INTO REPONSES U1
    USING (SELECT * FROM REPONSES_SAUV) U2
    ON (U1.ID_QUESTION = U2.ID_QUESTION AND U1.CODE_UAI = U1.CODE_UAI)
    WHEN MATCHED THEN UPDATE SET U1.REPONSE_N = U2.REPONSE_N, U1.REPONSE_N1 = U2.REPONSE_N1, U1.REPONSE_N2 = U2.REPONSE_N2 , U1.REPONSE_N3 = U2.REPONSE_N3;
    Mais je ne sais pas ou mettre la clause WHERE car si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MERGE INTO REPONSES U1
    USING (SELECT * FROM REPONSES_SAUV WHERE ID_QUESTION=56) U2
    ON (U1.ID_QUESTION = U2.ID_QUESTION AND U1.CODE_UAI = U1.CODE_UAI)
    WHEN  MATCHED THEN UPDATE SET U1.REPONSE_N = U2.REPONSE_N, U1.REPONSE_N1 =  U2.REPONSE_N1, U1.REPONSE_N2 = U2.REPONSE_N2 , U1.REPONSE_N3 =  U2.REPONSE_N3;
    J'ai la réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-30926 : Impossible d'obtenir un ensemble de lignes stables dans les tables sources ....
    Si vous avez une idée ... j'y retourne

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Si je ne m'abuse pas il doit y avoir plusieurs enregistrements dans la table source repornse_sauv avec même question_id (56) et même code_uai.

  3. #3
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut Euh non je ne crois pas
    Bonjour,

    Je viens de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) FROM REPONSES WHERE ID_QUESTION = 56 GROUP BY ID_QUESTION,CODE_UAI HAVING count(*) > 1;
    il me retourne rien, donc le couple est bien unique ???

    Olivier

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Moi j'ai parlé de REPONSES_SAUV...

Discussions similaires

  1. Mettre à jour un champ Boolean avec une clause "WHERE"
    Par niano dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/10/2007, 11h29
  2. DELETE avec une clause where
    Par liberty74 dans le forum Requêtes
    Réponses: 3
    Dernier message: 27/08/2007, 11h56
  3. Jointure avec une clause where
    Par pepi22 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 19/08/2007, 10h24
  4. Insert avec une clause where !?
    Par Thomad dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/08/2006, 09h55
  5. [super requete] Dumper un model avec une clause where
    Par elievar dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2005, 17h05

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