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

Requêtes et SQL. Discussion :

Requete de Mise a jour avec une Jointure :


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 125
    Points
    125
    Par défaut Requete de Mise a jour avec une Jointure :
    Bonjour et bonne annee a tout le monde,

    J’ai deux tables ; table A et table B.
    Table A:
    RecordID EstimatedDay DayId
    1 Thursday 4
    2 Tuesday 2
    3 xxx 777
    4 Tuesday 2
    5 Tuesday 2
    6 zzz 888
    7 vvv 999
    8 sss 333


    Table B:
    DayID ActualDay
    2 Mardi
    3 Mercredi
    4 Jeudi
    5 Vendredi



    Je veux que le contenu du champs A.EstimatedDay soit actualiser/remplacer PAR le contenu du champs B.ActualDay ; et ceci uniquement pour les enregistrements ou il y a une relation entre les deux tables. En gros, le resultat doit conserver les xxx, zzz,vvv et sss.


    J’ai essaye le code suivant mais ca ne marche pas en ce sens que xxx, zzz, vvv et sss sont simplement effaces.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE A LEFT JOIN B ON A.DayId=B.DayID 
    SET A.EstimatedDay = B.dayname;
    voici le resulat que j'ai obtenu:
    RecordID EstimatedDay DayId
    1 Jeudi 4
    2 Mardi 2
    3 777
    4 Mardi 2
    5 Mardi 2
    6 888
    7 999
    8 333

    voici le resultat auquel je veux aboutir:

    RecordID EstimatedDay DayId
    1 Jeudi 4
    2 Mardi 2
    3 xxx 777
    4 Mardi 2
    5 Mardi 2
    6 zzz 888
    7 vvv 999
    8 sss 333



    Merci d’avance de me donner un coup de main.

    Cordialement
    ps. excuse moi pour le manque de mise en mise en forme des tables.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    Si c'est accepté, il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE A INNER JOIN B ON A.DayId=B.DayID 
    SET A.EstimatedDay = B.dayname;
    Ou ce qui revient au même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE A LEFT JOIN B ON A.DayId=B.DayID 
    SET A.EstimatedDay = B.dayname WHERE not isnull(B.dayname)
     
    ou
    UPDATE A LEFT JOIN B ON A.DayId=B.DayID 
    SET A.EstimatedDay = nz(B.dayname, A.EstimatedDay)
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 125
    Points
    125
    Par défaut
    Bonjour Nico,
    Merci pour ta reponse.
    En meme temps, j’ai trouve cette soluce qui marche egalement.

    UPDATE A LEFT JOIN B ON A.DayId = B.DayID
    SET A.EstimatedDay = B.ActualDay
    Where A.DayId = B.DayID

    Merci de me dire laquelle de solutions est recommendee.

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Je ne serais pas surpris qu'à l'exécution il n'y ait aucune différence mais je préfère INNER JOIN car c'est le plus logique : cette instruction sert précisément à prendre uniquement les lignes communes aux 2 tables.
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/08/2013, 08h19
  2. Requete de mise a jour avec une somme defini par critere
    Par kinof dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/07/2013, 20h06
  3. mise a jour avec une requete croisee
    Par antoine dpt dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/09/2009, 13h55
  4. probleme avec des calculs et une requete de mise a jour
    Par el_quincho dans le forum Access
    Réponses: 2
    Dernier message: 16/03/2006, 10h06
  5. Réponses: 5
    Dernier message: 25/11/2005, 12h42

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