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 MySQL Discussion :

Suppression doublons avec contrainte clé étrangère [MySQL-4.0]


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 51
    Points : 25
    Points
    25
    Par défaut Suppression doublons avec contrainte clé étrangère
    Bonjour à tous,

    Ma bdd contient une table A avec des doublons que je souhaite supprimer. Pour illustrer le problème, voici la table en question :

    Table A :
    - Id : int(11) clé primaire
    - Nom : varchar(256)

    Pour un même nom, il existe plusieurs entrées dans la table A. Je souhaite donc regrouper toutes les entrées qui ont le même nom en une seule entrée. Mais le problème c'est que ma bdd contient également une table B avec pour contrainte sur l'un de ses champs l'id de la table A.

    Autrement dit, il ne suffit pas de supprimer les doublons de la table A mais il faut également mettre à jour toutes les entrées de la table B qui sont liées à l'un des doublons en question.

    Pour info la bdd contient 1 000 000 entrées avec 115 000 dans la table A dont 7000 doublons.

    Je cherche donc une solution pour supprimer les doublons et mettre à jour toute la bdd.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    Il faut commencer par mettre à jour votre table référençante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE B
    	, A AS X
    	, (SELECT MIN(Id) AS Id , Nom FROM A GROUP BY Nom) AS T
    	SET B.IdA = T.Id
    WHERE X.id = B.IdA
    AND X.Nom = T.Nom
    Puis supprimer les doublons dans la table référencée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DELETE A 
    FROM A 
    	,A as y
    WHERE A.nom = y.nom
    AND y.Id < A.Id

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 51
    Points : 25
    Points
    25
    Par défaut
    Parfait, merci beaucoup

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

Discussions similaires

  1. Suppression d'une ligne avec contraintes de clef étrangère
    Par freeway57 dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/05/2014, 11h34
  2. Suppression doublons avec nodupkey (PROC SORT)
    Par Kirata dans le forum SAS Base
    Réponses: 5
    Dernier message: 06/11/2012, 12h10
  3. Supprimer une table avec contrainte clé étrangère
    Par daydream123 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/02/2012, 17h28
  4. Réponses: 13
    Dernier message: 12/01/2006, 10h45
  5. [Debutant]Suppression dans des tables avec contraintes
    Par Roming22 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/10/2004, 17h23

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