Aller au contenu

Supprimer doublons SQL


SheitaN

Sujets conseillés

Bonjour à tous,

Lors de l'inscription de mes membres, il arrive que ma sécurité "anti-doublon" ne fonctionne pas très bien, j'ai donc, de temps en temps des doublons dans la BDD.

Je souhaiterai supprimer les doublons, afin de libérer les inscriptions inutiles.

Quel syntaxe dois-je utiliser ?

Merci d'avance,

SheitaN

Lien vers le commentaire
Partager sur d’autres sites

Bonjour SheitaN,

Ma solution pour résoudre le pb des doublons est de faire une double requète, la première pour connaitre les enregistrements en doublons ( avec un count - group by et having>1) , et la seconde pour les supprimer.

Lien vers le commentaire
Partager sur d’autres sites

le problème qui se pose est : quel enregistrement supprimer quand les valeurs ne sont pas toutes les mêmes sur les enregistrements multiples ? garder le dernier modifié ? mais si on n'a changé que le tél, par exemple, alors que l'adresse avait été changée sur l'autre fiche ?

Lien vers le commentaire
Partager sur d’autres sites

Concevoir correctement sa table est la meilleure chose à faire, je suis pas un adepte de la 3e forme normale, mais ce problème n'est jamais sensé arriver si la base est construite correctement : un champs devant être unique doit être déclaré comme tel, inutile de faire 2 requêtes.

Vous avez un attribut "unique" dans mysql pour chaque champs si c'est le SGBD que vous utilisez, cochez le et tentez d'insérer un doublon.

#1062 - Duplicate entry 'entrée' for key 1

Vous n'êtes pas non plus obligé pour chaque table de définir une clé primaire de type int en auto-incrément !

Modifié par SStephane
Lien vers le commentaire
Partager sur d’autres sites

Certes, la majorité des doublons peuvent être évités de cette manière, mais il existe des cas particuliers qui ne peuvent pas être réglés par une clé unique.

Exemple : quasiment toute saisie faite par un internaute, comme un commentaire laissé sur une page, une fiche client saisie avec 2 identifiants ou e-mail différents, une annonce...

Modifié par cyberlaura
Lien vers le commentaire
Partager sur d’autres sites

PLusieurs champs peuvent être unique (même dans MySQL), si tu estimes dans tes commentaires que le couple "identifiant", "message" doit être unique, tu peux le déclarer :

ALTER TABLE nom_table ADD UNIQUE (identifiant,message)

Pareil pour les annonces et tout le reste. Alors après il y auras toujours certains trucs perfectibles je te l'accorde, mais on peut tout de même considérablement assainir n'importe quelle base de cette manière.

Ce que je tiens surtout à souligner, c'est que les webmasters cherchent trop souvent à ajouter du code alors que la réponse est régulièrement simple dans leur SGBD, et à mon avis c'est le cas pour 99% des problèmes de doublons, y compris celui-ci ;)

Modifié par SStephane
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...