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 de 2 tables entre elles


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Mise à jour de 2 tables entre elles
    Bonjour à tous

    tout d'abords je voudrais vous remercier par la magnifique base de connaissances que représente votre site. J'ai réussi à faire plein de chose gràce à vous

    Voilà mon problème :

    J'ai 2 tables identiques en structure, disons Table1 et Table 2 avec champs1 et champs2 par exemple. champs1 etant un muméro unique d'enregistrement.

    Je souhaiterai à partir d'une commande (SQL ou VBA) comparer les 2 tables et les mettre à jour l'une par rapport à l'autre.
    Mettre les enregistrement absent d'une table à partir de l'autre et inversement.

    Je rien trouvé qui pourrais m'aider, j'en appelle à votre savoir

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour et bienvenue,

    Si la question se pose, c’est que ta base de données est probablement mal conçue au départ : il n’est pas « normal » d’avoir des infos identiques dans deux tables distinctes.
    Sinon, pour répondre à ta question et pour autant que tu as prévu d’éviter les doublons de cette info dans chacune des tables, il te suffit d’une requête ajout de l’une dans l’autre : les absents seront ajoutés et les déjà présents seront rejetés en tant que doublons.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,
    voici une requete qui t'affiche le travail à faire :
    en colonne 1, l'union des valeurs Champ1, Champ2
    en colonne 2, les valeurs Champ1
    en colonne 3, , les valeurs Champ2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT U123.Champ_U, U123.Champ1, T2.Champ2
    FROM
    (SELECT U12.Champ_U, T1.Champ1
    FROM
    (SELECT Champ1 AS Champ_U FROM Table1 
    UNION
    SELECT Champ2 FROM TABLE2) AS U12
    LEFT JOIN Table1 AS T1 ON T1.Champ1 = U12.Champ_U) AS U123
    LEFT JOIN Table2 AS T2 ON T2.Champ2 = U123.Champ_U
    Vois si ca peut t'aider dans ta démarche
    "Always look at the bright side of life." Monty Python.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    En fait je travaille en version Frontal / dorsal (en suivant votre tuto d'ailleurs qui est très bien fait). Le problème c'est que parfois, le résultat des requetes est super long à s'afficher sur mon fichier frontal.

    Ce que je voulais faire (mais qui est peut-être une mauvaise idée), c'est d'avoir la table de mes données dans mon fichier frontal et une base identique dans le dorsal.
    A l'ouverture du fichier frontal, la table de données se met à jour par rapport à la table dorsale.
    A chaque saisie de nouvelles données (à travers un formulaire), les données seront mis dans la base frontal et ce que je voulais faire c'est transférer les nouvelles données dans la dorsale à la fermeture du fichier.

    Lors des requêtes, je voulais chercher les données dans la base du frontal pour accélérer les extractions.

    Je sais, ça peut paraître un peu tordu comme raisonnement...

    Merci pour vos conseils, je vais essayer de me dépatouiller.

    Bonne soirée

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut orthographe
    Ton raisonnement n'est pas tordu mais la solution peut être pire que le mal.

    Cela s'appele de la réplication et c'était une telle source de problème que M$ a retiré cette fonctionnalité depuis Access 2007.

    Elle peut être mise en oeuvre manuellement assez simplement si aucun utilisateur ne modifie les données d'un autre (ex : des commerciaux travaillant par région, un client est dans une région ou une autre mais jamais dans deux régions).

    Je te recommande de voir si tu peux améliorer tes temps de réponse par exemple en faisant des requêtes plus ciblées, réduire les jointures, ajouter des indexs, en repensant tes formulaires ... bref toutes actions qui évitent d'avoir à gérer la duplication de tes données.

    L'assistant d'analyse de performances de Access est de bons conseils, le lancer et regarder les résultats peut donner de bonnes pistes d'amélioration. Attention ne marche pas sur le SQL caché dans du code VBA.

    Pour les pistes d'amélioration voici quelques questions :

    Est-ce que si tu te connecte directement sur la table et que tu vas au dernier enregistrement c'est lent ?

    Est-ce seulement lorsque tu passes par une requête ? par un formulaire ?

    Quel est la taille de ta base ?

    As-tu compacté les bases (frontale et dorsale) ?

    Une dernière piste d'amélioration possible, mais couteuse, car il faudra adapter ton application : migrer vers une grosse base comme MS SQL Server ou Oracle.


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Merci pour ces infos, je vais regarder tout ça.

    J'avais déjà utilisé l'assistant d'analyse d'access et tenu compte des remarques.

    Les lenteurs que je constate, c'est lorsque nous lançons des requêtes d'extraction sur plusieurs fichiers frontaux (sur des postes différents), je passe de 15-20 sec à 2 minutes parfois.
    Lors de la saisie des données, si nous travaillons aussi sur plusieurs postes en même temps, le formulaire de saisie est un peu plus long à s'afficher.

    Et enfin, il y a des cas (assez rare) où la base dorsale est en lecture seule sur le lecteur réseau, et le seul moyen de la remettre en écriture c'est de passer par les administrateurs...et je ne sais pas pourquoi elle passe en lecture seule...
    Lorsqu'elle est en lecture seule, impossible bien entendu de saisir de nouvelles données, uniquement de faire des extractions.

    Dans la table dorsale nous avons pour l'instant 2700 enregistrements

    Bonne journée à tous

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

Discussions similaires

  1. [AC-2010] Mise à jour automatique champ commun entre plusieurs tables
    Par Fontaine_CLB dans le forum IHM
    Réponses: 18
    Dernier message: 23/10/2014, 16h58
  2. mise à jour massive des tables entre 2 bases oracle
    Par rihojaniero dans le forum Oracle
    Réponses: 1
    Dernier message: 13/10/2006, 08h22
  3. mise à jour automatique de champs entre 2 tables
    Par romdyane dans le forum Access
    Réponses: 5
    Dernier message: 11/10/2005, 18h51
  4. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46
  5. mise à jour d'une table d'interbase sous delphi
    Par kouraichi35 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/10/2004, 13h09

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