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 :

[O10g] Requête de mise à jour d'une colonne


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 66
    Points
    66
    Par défaut [O10g] Requête de mise à jour d'une colonne
    Bonjour,
    Je dois mettre à jour une colonne d'une table selon certains critères et je ne sais pas comment faire.

    J'ai 1 table : T_TMP
    qui a 3 colonnes : CLI , CPT et SSCLI (les 3 sont des VARCHAR)

    Mes données ressemblent à ça :
    CLI CPT SSCLI
    11111 101 33333
    22222 102 33333
    33333 103 11111
    44444 104 22222

    Je voudrais remplacer mes valeurs de la colonne SSCLI par la valeur CPT dont le CLI = SSCLI.

    En gros, arriver à ça :
    CLI CPT SSCLI
    11111 101 103
    22222 102 103
    33333 103 101
    44444 104 102

    Bref arriver à faire un Update du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Update T_TMP Set SSCLI = CPT Where SSCLI = CLI;
    Mais bon, un truc qui marche, donc bien plus compliqué je pense.
    Une idée ? Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il faut réutiliser votre table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE T_TMP t1
    SET t1.SSCLI = (select t2.CPT from T_TMP t2
                    WHERE t2.SSCLI = t1.CLI)
    WHERE EXISTS (select null from T_TMP t2
                  WHERE t2.SSCLI = t1.CLI);

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 66
    Points
    66
    Par défaut
    Super, merci beaucoup.
    C'était ça mais j'ai du modifier les "select" comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE T_TMP t1
    SET t1.SSCLI = (SELECT t2.CPT FROM T_TMP t2
                    WHERE t1.SSCLI = t2.CLI)
    WHERE EXISTS (SELECT NULL FROM T_TMP t2
                  WHERE t1.SSCLI = t2.CLI);

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

Discussions similaires

  1. Mise à jour d'une colonne: update avec case
    Par MangoZaz dans le forum Langage SQL
    Réponses: 9
    Dernier message: 05/09/2014, 09h55
  2. [AC-2003] Mise à jour d'une colonne par une autre colonne
    Par candrau dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/06/2011, 09h48
  3. Réponses: 3
    Dernier message: 25/11/2010, 11h59
  4. Réponses: 7
    Dernier message: 20/08/2009, 01h48
  5. [MySQL] Mise à jour d'une colonne.
    Par kifouillou dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 31/03/2008, 11h15

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