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 :

Remplacement d'un ID par un autre [AC-2010]


Sujet :

Access

  1. #1
    Membre expérimenté
    Homme Profil pro
    Chargé de projet
    Inscrit en
    Novembre 2015
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 429
    Points : 1 684
    Points
    1 684
    Par défaut Remplacement d'un ID par un autre
    Bonjour,

    je voudrais supprimer tout les doublons de ma table MTCE et conserver une ligne (sa je sais le faire)
    mais je dois aussi remplacer l'ID des lignes qui vont être suprimé par l'ID des lignes qui sont conservé afin de ne pas perdre d'information.
    Quelqu'un aurait-il une piste ?
    (sur l'image en Rouge le champs où je supprime les doublons et en bleu celui ou je dois remplacer l'ID doublon par un ID que je conserve)
    Images attachées Images attachées  

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 112
    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 112
    Points : 5 237
    Points
    5 237
    Par défaut
    Bonjour,

    Il ne peut y avoir de doublon sur idMTCE puisque c'est la clé unique. Il faut donc écrire la requete qui permet de déterminer les idMTCE à garder, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select min(idmtce) from mtce group by marque, modele, gap
    Ensuite rajouter une colonne "idmin" à la table mtce et la remplir par cet update (2 alias pour la même table) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update mtce m set idmin=(select min(idmtce) from mtce x where x.marque=m.marque and...)
    Ensuite la table se met à jour simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update periode set idvehicule=(select idmin from mtce where periode.idvehicule=mtce.idmtce)
    puis supprimer les doublons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete from mtce where idmtce<>idmin
    enfin supprimer la colonne idmin

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chargé de projet
    Inscrit en
    Novembre 2015
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 429
    Points : 1 684
    Points
    1 684
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonjour,

    Il ne peut y avoir de doublon sur idMTCE puisque c'est la clé unique. Il faut donc écrire la requete qui permet de déterminer les idMTCE à garder, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select min(idmtce) from mtce group by marque, modele, gap
    Ensuite rajouter une colonne "idmin" à la table mtce et la remplir par cet update (2 alias pour la même table) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update mtce m set idmin=(select min(idmtce) from mtce x where x.marque=m.marque and...)
    Ensuite la table se met à jour simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update periode set idvehicule=(select idmin from mtce where periode.idvehicule=mtce.idmtce)
    puis supprimer les doublons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete from mtce where idmtce<>idmin
    enfin supprimer la colonne idmin
    Merci je testerais sa demain

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chargé de projet
    Inscrit en
    Novembre 2015
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 429
    Points : 1 684
    Points
    1 684
    Par défaut
    Merci de ton aide il semblerait que ton script marche mais les requetes mises à jours ne fonctionnent pas sur mon access quand je fais affichage cela affiche bien toute les cible devant etre modifié mais lors de l'éxécution cela ne fontionne pas.
    Mais j'ai trouvé une solution un peu bourrin, j'ai créé un bot avec supermacro qui fait la mise à jour directement dans la table sa lui prend 3 heures pour faire 1527 MAJ mais c'est efficace.

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

Discussions similaires

  1. [DOM] Remplacer un arbre DOM par un autre
    Par kingmandrax dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/10/2006, 12h20
  2. Remplacement d'un texte par un autre
    Par Iria77 dans le forum Général Python
    Réponses: 3
    Dernier message: 21/08/2006, 08h56
  3. remplacement d'une chaine par une autre
    Par zalalus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/07/2006, 10h09
  4. Remplacement d'un segment par un autre
    Par p0Kep0K dans le forum Langage
    Réponses: 3
    Dernier message: 09/02/2006, 18h45
  5. remplacement d'une valeur par une autre
    Par hugoos dans le forum Langage
    Réponses: 9
    Dernier message: 20/09/2005, 21h43

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