Bonjour,
Je vous expose rapidement mon soucis : j'ai une table de ce type
+---+-----+---------+----+---+------+
| id | nom | prenom | tél | cp | ville |
+---+-----+---------+----+---+------+
| 1 | dupont | prenom | 123456 | cp | ville |
| 2 | dupond | prenom | 123456 | cp | ville |
| 3 | martin | prenom | 789556 | cp | ville |
| 4 | prenom| dupont | 123456 | cp | ville |
+---+-----+---------+----+---+------+
Ce que je souhaiterais c'est pouvoir afficher (et non pas supprimer directement) les doublons et "faux doublons". Je m'explique, en gros j'aimerais retrouver toutes les lignes dont le numéro de téléphone est identique + nom + prénom. Or il faudrait que je puisse inclure dans la recherche les éventuelles inversion entre le nom et le prénom (par exempl la ligne 1 et 4) mais aussi les fautes d'orthographe lors de la saisie des noms. J'ai commencé à trouver cette requête :
Ça marche pas mal mais j'aimerais pouvoir détecter une erreur de frappe comme "dupnot", je n'arrive pas à aller plus loin...J'ai essayé avec SOUNDEX mais le problème c'est qu'avec la prononciation anglaise c'est pas terrible. Avez vous des idées pour m'éclairer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT COUNT(T1.id) AS nb, T1.id,T1.nom, T1.prenom,T1.tel FROM table AS T1 LEFT JOIN table AS T2 ON T1.tel = T2.tel WHERE T1.type_ressource=17 AND (((T1.nom LIKE BINARY CONCAT('%',T2.nom,'%')) AND (T1.prenom LIKE BINARY CONCAT('%',T2.prenom,'%'))) OR ((T1.nom LIKE BINARY CONCAT('%',T2.prenom,'%')) AND (T1.prenom LIKE BINARY CONCAT('%',T2.nom,'%')))) GROUP BY T1.id HAVING nb > 1 ORDER BY tel,nom,prenom![]()
Partager