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

Oracle Discussion :

Update d'une table a partir d'une autre


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 10
    Points
    10
    Par défaut Update d'une table a partir d'une autre
    Bonjour,
    ça fait très longtemps que je n'ai pas fait d'SQL, et jamais de PLSQL.
    Mon problème:
    j'ai une vielle base de donnée en ORACLE 8, comme elle n'est plus maintenue et qu'elle fonctionne comme ça, on la laisse en 8.
    Mais je dois faire une modification d'un champ dans toute la table a partir d'un fichier CSV (j'ai réussi a rappatrier le fichier dans une table avec sqlloader).

    Maintenant je souhaite mettre a jour mon ancienne table avec les données de la nouvelle.

    On a des codes utilisateurs qui changent, donc le but est de dire que dans la table des utilisateurs on les parcours tous et quand un code existe dans la nouvelle table on change le code de l'utilisateur par le nouveau qui est dans la nouvelle.
    J'ai donc deux tables : utilisateurs avec plusieurs colonnes dont code_utilisateur (que je dois mettre a jour)
    nouvelletable qui a deux colonnes anciencode et nouveaucode.

    J'ai essayé de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    update utilisateurs u
    set u.code_utilisateur = (select n.nouveaucode from nouvelletable n  where u.code_utilisateur  = n.anciencode)
    Mais ceci me donne une mise a zéro de ma colonne code_utilisateur.
    j'ai essayé d'autre codes en rajoutant un Where après ces lignes par exemple mais toujours sans succès.


    Merci de voter aide

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Essayez comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    update utilisateurs u
       set u.code_utilisateur = (select n.nouveaucode
                                   from nouvelletable n
                                  where u.code_utilisateur = n.anciencode)
     where exists (select null
                     from nouvelletable n
                    where u.code_utilisateur = n.anciencode);

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup,
    Ça fonctionne très bien comme ça.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 37
    Points : 42
    Points
    42
    Par défaut
    Impeccable !
    Merci beaucoup !
    Je voulais poster la même chose sur le forum car j'ai le même problème de mise à jour de table avec des articles en plus dans la nouvelle table et aussi des articles en plus dans l'ancienne table mais encore des désignations qui ont changé pour beaucoup d'articles, plus les blocages des clés étrangères pour les code articles propagés dans d'autres tables.
    Bref le casse-tête !
    Et là ? Tout roule !
    En revanche, j'avoue ne pas comprendre la solution...
    Merci à WALDAR et merci à developpez.com !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/06/2010, 03h18
  2. Réponses: 4
    Dernier message: 01/04/2010, 12h06
  3. [MySQL] Créer une table actuelle à partir d'une table historique
    Par cleminute dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/10/2009, 14h35
  4. Update de Pivot Table a partir d'une autre feuille
    Par Henricoo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/05/2007, 14h36
  5. Update d'une table a partir d'une autre table
    Par Yannis06 dans le forum Oracle
    Réponses: 6
    Dernier message: 11/08/2005, 11h32

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