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

Access Discussion :

Fusion entre tables avec relations [AC-2010]


Sujet :

Access

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut Fusion entre tables avec relations
    Bonjour,
    Pour des raisons de simplification de maintenance, j’aimerais fusionner 2 tables, mais je m’interroge sur la façon de faire à cause des relations avec les tables liées

    Je vais essayer d’être clair !

    1) J’ai une table A (plusieurs milliers de lignes) en relation 1 à plusieurs avec 2 tables B et C
    Les tables A, B et C ont un index auto
    Les tables B et C ont un champ reprenant le N°Auto de la table A pour faire la relation un à plusieurs

    2) J’ai une table D (plusieurs centaines de lignes) en relation 1 à plusieurs avec 2 tables E et F
    Les tables D,E et F ont un index auto
    Les tables E et F ont un champ reprenant le N°Auto de la table D pour faire la relation un à plusieurs

    Les tables A et D ont la même structure (nom de champs différents mais que je peux renommer)
    Idem pour B et E, et pour C et F

    Par une requête ajout ou un copier/coller je sais ajouter D à A, E à B, F à C mais je ne vois pas comment gérer les relations

    Par avance merci de vos suggestions
    Bertrand

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour 105rn2 ,

    Intéressant...

    En fait, le problème ne se pose que pour :
    • D qui va prendre un autre n° auto en fusionnant avec A ;
    • E et F qui vont conserver l'ancien n° de D en clé étrangère.


    Suggestion :
    • ajouter un champ numérique à A ==> Id_D_Old ;
    • ajouter un champ numérique à D ==> Id_D_Old ;
      ==> A et D toujours avec la même structure.
    • requête "mise à jour" sur D ==> Id_D_Old=Id_D (Id_D=clé primaire actuelle de D en n° auto) ;
    • requête "ajout" de D vers A ==> Id_A (n° auto) ;
      ==> Id_A devient la clé primaire des anciens D, mais nous avons stocké l'ancienne clé primaire de D.
    • requête "mise à jour" sur E liée à A, via E.Id_D=A.Id_D_Old ==> E.Id_D=A.Id_A ;
      ==> mise à jour de la clé étrangère de E.
    • requête "mise à jour" sur F liée à A, via F.Id_D=A.Id_D_Old ==> F.Id_D=A.Id_A ;
      ==> mise à jour de la clé étrangère de F.

    ==> les liens devraient être reconstruits.


    Bien entendu :
    • prévoir la sauvegarde de toutes les tables avant toute manipulation ;
    • personne ne doit travailler sur ces tables.


    A tester.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Bonjour Richard,
    merci pour cette réponse rapide et pleine de bon sens !
    je n'avais pas pensé à la clé "temporaire"
    Je suppose qu'à la fin je peux fusionner B et E, puis C et F
    Par contre, pour l'essai il va me falloir plusieurs jours ; pour simplifier la question j'avais supposé que A et D avaient la même structure, ce qui n'est pas tout a fait vrai, mais faisable : qq champs à ajouter/modifier
    mais comme pour e genre de manip, je ne vais pas très vite et fait bcp de sauvegardes intermédiaires ...
    merci encore, je vous tiens au courant !
    Bertrand

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Bonsoir,
    j'ai "bien travaillé" et maintenant mes structures sont (ou devraient être !) identiques.
    J'ai par contre du mal(désolé je suis débutant) à synthétiser la requête de mise à jour :
    requête "mise à jour" sur E liée à A, via E.Id_D=A.Id_D_Old ==> E.Id_D=A.Id_A ;
    ==> mise à jour de la clé étrangère de E.
    dans la requête, peux t on mettre à jour un champ étant à la base de la sélection ? ou dois je créer dans E un nouveau champ E.Id_D_New intermédiaire ?
    par avance, merci
    Bertrand

  5. #5
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour 105rn2,

    Citation Envoyé par 105rn2
    Citation Envoyé par Richard_35
    requête "mise à jour" sur E liée à A, via E.Id_D=A.Id_D_Old ==> E.Id_D=A.Id_A ;
    ==> mise à jour de la clé étrangère de E.
    dans la requête, peux t on mettre à jour un champ étant à la base de la sélection ?
    ==> effectivement, c'est un point délicat. Le mieux est de le tester : je pense que cela devrait passer.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Bonsoir,
    Effectivement ça passe
    J'ai eu qq pb avec les liens entre tables que j'avais oublié de supprimer : Access me refusait donc logiquement de modifier les id car ne correspondant plus à la table liée !
    Une fois ces liens supprimés, ça a marché nickel chrome !
    Merci encore de votre aide et de vos explications détaillées
    Bertrand

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2015, 11h15
  2. Relation entre tables avec clés différentes
    Par lylandra6 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/09/2008, 23h01
  3. [MySQL] Compter entrées table avec un critère <
    Par Sh00ter dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/04/2007, 21h02
  4. [MySQL] mysql_fetch_assoc pour 2 tables avec relation 1-1
    Par jiojioforever dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/01/2007, 09h41
  5. fusion de table avec un champ en commun
    Par chamoix dans le forum Access
    Réponses: 3
    Dernier message: 13/12/2006, 23h18

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