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 :

Mise à jour d'une table avec une autre


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Mise à jour d'une table avec une autre
    Bonjour,

    Je n'arrive pas à effectuer une petite manipulation sous Access 2007, et vu que je ne sais pas comment m'y prendre, je n'arrive pas à chercher efficacement dans les forums.
    J'ai une Table A avec 500 enregistrements.
    J'ai une Table B avec 300 enregistrements.

    Je veux faire une mise à jour de ma table B avec ma table A avec une condition, que la mise à jour se fasse que sur enregistrements présents dans ma Table B. Il y a un champ commun qui permet de retrouver ces enregistrements.

    J'ai testé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO TableB (CATEGO, FEU, TYP )
    SELECT [CATEGORIE],[FEUX],[TYPE]
    FROM TableA
    WHERE TableA.Chp1 = TableB.Chp2;
    Le soucis, c'est qu'il me dit qu'il met 500 enregistrements à jour et non 300 comme.

    Je ne comprend pas trop mon erreur, et je ne suis pas une super balaise de Access ...

    Merci de votre aide et de votre compréhension.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    salut,
    s'il s'agit d'une mise à jour, il faut regarder UPDATE et non pas INSERT INTO...
    d'autre part, dans ta partie SELECT, TableB n'existe pas, donc soit tu l'ajoutes dans ta clause FROM, soit tu fais une jointure

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Avec une jointure, je peux mettre à jour mes champs de ma tableB à partir de ma tableA, car j'ai essayé, et ça me sort une table avec 500 enregistrements et non 300 comme ça devrait.


  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    bon,
    peux-tu nous dire exactement ce que tu cherches à faire ?
    quel champ est mis à jour à partir de quel autre ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Je m'explique.

    J'ai une Table A (300 lignes) : Chp1_A, Chp2_A, Chp3_A
    J'ai une Table B (500 lignes) : Chp1_B, Chp2_B, Chp3_B

    Dans ma TableA, seul mon Chp1_A est renseigné. Il correspond au champ Chp1_B de ma TableB.
    Je veux migrer les données des deux autres champs de ma Table B vers ma Table A quand Chp1_A = Chp2_B. 300 enregistrements doivent donc être mis à jour/ajouter/ou je sais pas comment on dit.

    C'est plus clair comme ça ?

    Merci en tous cas pour tes efforts pour me comprendre et m'aider.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    ok,
    essaye de voir ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TableA INNER JOIN TableB ON TableA.Chp1_A = TableB.Chp1_B SET TableA.Chp2_A = TableB.Chp2_B, TableA.Chp3_A = TableB.Chp3_B

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Il me répond que l'expression JOIN n'est pas supportée. Faut-il que les champs soient dans un format spécial type texte, nombre ?
    Il me surligne les deux champs par lesquels on fait la liaison !

    C'est bizarre, car je suis sure avoir déjà effectué une telle procédure en SQL, mais Access m'a l'air différent.

  8. #8
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 228
    Points : 92
    Points
    92
    Par défaut
    Bonjour,
    je suis dans le même cas que toi, j'arrive pas a mettre a jour une table avec un autre.

    Je suis tes messages

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 665
    Points : 34 373
    Points
    34 373
    Par défaut
    voici une requête que j'utilise perso au bouot, qui marche très bien...
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE dbo_HEL_ISSUER_FILIATION INNER JOIN dbo_HEL_ISSUER ON dbo_HEL_ISSUER_FILIATION.ID_ISSUER = dbo_HEL_ISSUER.ID_ISSUER SET dbo_HEL_ISSUER_FILIATION.ID_ALIM = dbo_HEL_ISSUER.ID_ALIM;

    n'as-tu (n'avez-vous) pas des problèmes de références de projets ?

    quel est le code SQL exact de vos requetes ? les champs sur lesquels vous faites votre jointure sont-ils bien de meme type ?

  10. #10
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 228
    Points : 92
    Points
    92
    Par défaut
    voici un exemple

    tablea

    Code produit(sans doublons), nom , dimension

    Tableb

    code produit(avec doublons),Volume


    ont souhaiterais une requete qui mette a jour le champ "dimension" de la tablea avec les données de la tableb du champs "volume".

    la relation des deux tables sont code produit,

  11. #11
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Comment savoir le volume à utiliser si il existe des doublons ?
    Le plus grand, le plus petit, le dernier renseigné (Bien que je ne voie pas de date) ?

    Soyez clair sur la description de vos tables !


  12. #12
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 228
    Points : 92
    Points
    92
    Par défaut
    le volume n'a pas de donne differente:

    voici un extrai de tableB:

    codeproduit / volume
    456 / 12
    456 / 12
    582 / 13
    584 / 16
    897 / 11
    897 / 12

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 11h17
  2. [MySQL] requete dans une table avec une varible d'une autre table
    Par kogoi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 03/11/2011, 16h24
  3. Réponses: 7
    Dernier message: 11/05/2010, 17h37
  4. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 22h50
  5. Réponses: 6
    Dernier message: 30/08/2007, 17h47

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