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

Développement SQL Server Discussion :

UPDATE ligne à ligne


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    C++, Java
    Inscrit en
    Juillet 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : C++, Java
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 52
    Points : 32
    Points
    32
    Par défaut UPDATE ligne à ligne
    Bonjour,

    Sur une base de données SQL Server, j'ai deux tables contenant un nombre de lignes identiques. Je voudrais mettre à jour une colonne de l'une de ces deux tables, à partir de la colonne du même nom de l'autre, en faisant une mise à jour ligne à ligne. (table1.colonneX.ligne1 = table2.colonneX.ligne1, etc... jusqu'à la dernière ligne). Est-il possible de le faire ainsi en Transac-SQL ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Si les lignes ont un identifiant (unique) commun, cela se règle avec une simple requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    UPDATE  cible   tgt
        SET tgt.colonne = 
            (   SELECT  src.colonne
                FROM    source  src
                WHERE   src.clef    = tgt.clef
            )
    WHERE   EXISTS
            (   SELECT  NULL
                FROM    source  src
                WHERE   src.clef    = tgt.clef
            )
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Ou bien comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE C
        SET LaColonne = S.LaColonne
    FROM Cible C
    INNER JOIN Source S 
        ON S.Clef = C.Clef

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    C++, Java
    Inscrit en
    Juillet 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : C++, Java
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    Le problème, c'est que je ne peux pas m'appuyer sur une clé, justement
    La clé de ma table 1, qui est celle de la table 2, a été écrasée par une mauvaise donnée.

    Je voudrais donc justement remettre les choses comme il faut en réécrasant la donnée de la table 1 par celle de la table 2.

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Les lignes dans une table n'ayant pas d'ordre, il vous faut trouver une solution pour faire correspondre les lignes entre les deux tables.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    C++, Java
    Inscrit en
    Juillet 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : C++, Java
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 52
    Points : 32
    Points
    32
    Par défaut
    A priori, je ne vais pas pouvoir corriger la table directement.
    Etant donné qu'elle a été chargée à partir d'un fichier, je vais corriger le fichier à la source et recharger intégralement la table.

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

Discussions similaires

  1. Update des ligne de commandes
    Par le_dilem dans le forum Firebird
    Réponses: 11
    Dernier message: 15/04/2010, 13h24
  2. Update des ligne de commandes
    Par le_dilem dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 25/03/2010, 17h05
  3. update une ligne de gridview sans passer par edit
    Par pseudo88 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 16/03/2009, 12h52
  4. update sur ligne avec doublon
    Par nicerico dans le forum Requêtes
    Réponses: 9
    Dernier message: 08/11/2008, 17h13
  5. fonction UPDATE - plusieurs lignes
    Par mablanchette dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/10/2008, 14h03

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