Afficher les doublons dans une bdd MYSQL

Fermé
So-called-punk Messages postés 15 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 24 avril 2010 - 24 avril 2010 à 11:57
dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 - 25 avril 2010 à 01:53
Bonjour,
Après plusieurs recherches sur les doublons dans une bdd MYSQL sur le net, je n'ai rien trouvé qui correspondrait à ma recherche.
Voilà, je travaille actuellement dans une librairie, avec une base de données MYSQL.
Alors j'explique: on a une liste d'auteurs, avec nom et prénom (plus d'autres champs), et il existe certains auteurs en double.
Exemple: TOLKIEN et TOLKIEN JRR et TOLKIEN J.R.R, etc...
Il faut donc chercher tous les auteurs en double et refaire les fiches produits pour mettre sous un seul nom.
Le truc, c'est que c'est long, chercher les doublons ça prend du temps, donc j'aurais voulu savoir si avec une requête simple on pouvait afficher une table résultats avec que les noms de famille en double.
Voilà, je pensais que ce serait simple, j'ai fait un peu de SQl, mais là je rame carrément.
Merci!


A voir également:

5 réponses

Salut

Ce n'est pas spécifique à MySQL, mais tu peux:
1. isoler les enregistrements correspondants à un auteur avec
select ... from ... where upper(auteur) like '%TOLKIEN%'
2. une fois que tu as trouvé le bon critère isolant les enregistrements à corriger, tu balances un
update ... set auteur = 'J.R.R. TOLKIEN' where upper(auteur) like '%TOLKIEN%'
(ce like '%TOLKIEN%' étant bien évidemment le bon critère trouvé)
0
So-called-punk Messages postés 15 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 24 avril 2010
24 avril 2010 à 12:55
Tout d'abord, merci de me répondre!
Ensuite, le truc c'est que je voudrais une requête qui me donnerait tous les auteurs en double pour après les modifier.
Parceque pour les modifier il faut entrer dans la fiche produit, et changer l'auteur à supprimer par celui qui est bon.
Exemple: j'ai TOLKIEN et TOLKIEN J. R. R., je vais devoir chercher toutes les fiches produits de TOLKIEN pour changer l'auteur, que je remplacerais par TOLKIEN J. R. R., et ensuite supprimer TOLKIEN.
Au lieu de faire défiler la liste d'auteurs, et de chercher les auteurs en double, je voudrais une requête qui me donne tous les noms de famille en double.
0
salut

tu ne pourras pas lister les lignes de ta database groupées par "similiarité" d'une partie d'une colonne. tu vas devoir te palucher tout ça à la mimine, auteur par auteur avec l'exemple de tolkien ci-dessus

alors, en attendant qu'un grand gourou mysql surgisse du chapeau et te dise 'MySQL sait faire', tu n'as d'autre choix que de te lancer dans ce travail titanesque
0
j'ai oublié une piste
il existe la fonction SOUNDEX mais je sais pas si elle est dispo dans MySQL
son but est de renvoyer une chaine de caractères dépendant de la prononciation (en anglais) de la chaine. Elle est particulièrement indiquée pour les similarités mais elle a ses limites : le soundex de J.R.R. TOLKIEN ne sera pas le même que celui de TOLKIEN

bon courage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
25 avril 2010 à 01:53
Bonsoir,
- oui soundex existe en MySQL : voir ici

- tu peux aussi essayer de regrouper par les X premiers caractères du nom et compter : ex avec 6 dans le code qui suit
SELECT COUNT(*) AS Nb, LEFT(Nom,6) AS DebutNom FROM AUTEURS GROUP BY DebutNom


Dans ton exemple ca te donnera :
3 TOLKIE
...
ce qui signifie qu'il y a dans ta table AUTEURS 3 auteurs dont le nom commence par TOLKIE ...
Mon conseil : commence par un nombre élevé (6 ou 7), puis baisse le progressivement jusqu'à avoir identifié tous les doublons ... (sinon, tu peux aussi écrire un peu de code si tu connais bien le SQL ou un langage de programmation comme PHP ou VB)

Bon courage
0