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

Langage SQL Discussion :

Comment faire un UPDATE partiel?


Sujet :

Langage SQL

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut Comment faire un UPDATE partiel?
    Bonjour,

    j'ai deux tables (NC et NC_update_access). La premiere contient des informations sur des factures (extraitent automatiquement) et la seconde correspond a des données ajoutée manuellement par quelqu'un au sujet de ces factures.
    Les deux tables ont en commun le n° de facture.

    Ma tableau automatique comporte des données sur plusieurs années et ma table manuelle ne comporte que les factures du mois précédent.

    J'essaye d'update ma table automatique pour lui rajouter les commentaires du mois mais il me met a <null> tout les champs qui ne correspondent pas au bon n° de facture, ce qui ne m'arrange pas du tout.

    je fais ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE NC
    SET commentaire = 
        (SELECT NC_update_access.commentaire
        FROM NC_update_access
        WHERE     (NC.nfacture = NC_update_access.nfacture))
    et ca produit ca

    Pièce jointe 33354

    Il y a bien update aux bons n° mais il m'a effacé tout ce qui est antérieur

    Qu'est-ce que je fais comme bétise?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Ton WHERE est dans la sous-requête et permet de mettre en relation les 2 tables par le nfacture, par contre aucun WHERE ne vient limiter ta requête principale en UPDATE : donc tous les enreg. sont mis à jour, et si la sous-requête ne ramène rien, il met à jour avec du null.
    Il faut donc compléter comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE NC
    SET commentaire = 
        (SELECT NC_update_access.commentaire
        FROM NC_update_access
        WHERE     (NC.nfacture = NC_update_access.nfacture))
    WHERE NC.nfacture IN (SELECT DISTINCT nfacture FROM NC_update_access)

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    Merci beaucoup, je vais tester ça

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

Discussions similaires

  1. Comment faire l'Update
    Par andy38 dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/02/2007, 11h51
  2. Réponses: 1
    Dernier message: 07/09/2006, 16h03
  3. comment faire ce update svp?
    Par iam dans le forum Bases de données
    Réponses: 6
    Dernier message: 03/07/2006, 13h56
  4. [VB6] Comment faire un update sur des textbox qui sont créés
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 27
    Dernier message: 16/02/2006, 14h52
  5. faire un update partiel
    Par danseur dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 19/01/2004, 18h27

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