SheitaN Posté 20 Mars 2009 Posté 20 Mars 2009 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
cyberlaura Posté 20 Mars 2009 Posté 20 Mars 2009 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.
Leonick Posté 20 Mars 2009 Posté 20 Mars 2009 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 ?
SStephane Posté 20 Mars 2009 Posté 20 Mars 2009 (modifié) 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é 20 Mars 2009 par SStephane
cyberlaura Posté 21 Mars 2009 Posté 21 Mars 2009 (modifié) 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é 21 Mars 2009 par cyberlaura
SStephane Posté 21 Mars 2009 Posté 21 Mars 2009 (modifié) 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é 21 Mars 2009 par SStephane
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant