Bonjour,
Je cherche à faire un dédoublonnage sur une table d'appelant. C'est à dire que je trouve tous les doublons, je met à jour les infos entre ces doublons, et je supprime les surnuméraires. Par doublons, j'entend des appelants avec le même nom, prénom, et numéro de téléphone. Ces doublons sont souvent créés par erreur par une opératrice qui recrée un appelant, parfois avec des infos supplémentaires (adresse, numéro de portable) au lieu de mettre à jour l'ancien appelant.
Je doit donc trouver toutes les lignes avec le même nom et n° de tel, et, pour chaque champ, le mettre à jour à partir des autres doublons si le champ d'origine est vide ou qu'un champ renseigné modifié plus recemment existe.
Pour ce qui est de la suppression en elle-même, je n'y suis pas et de toute façon je ne m'en fait pas. Mes premiers tests de suppression fonctionnent. Mon problème, c'est la mise à jour des doublons entre eux. Je n'y arrive pas correctement!!!!
Voici ma requète actuelle (je ne m'occupe que d'un seul champ pour le moment):
UPDATE cl_appelants AS T1
INNER JOIN cl_appelants AS T2
ON T1.NomAppelant = T2.NomAppelant
AND T1.Tel1 = T2.Tel1
AND T1.NumAppelant<>T2.NumAppelant
SET
T1.Rue1=IF(T2.Rue1<>'',IF(T1.Rue1='',T2.Rue1,IF(T2.Modif>T1.Modif,T2.Rue1,T1.Rue1)),T1.Rue1)
Les IF imbriqués me permettent normalement de définir si il faut mettre le champ à jour ou pas. Donc SI le champ source n'est pas vide ET (SI le champ à modifier est vide OU SI le champ source a été modifié plus recemment que le champ à modifier)
Pour mes tests, j'ai créé 5 doublons. Si je change la valeur du champ du premier doublon, la requete met bien à jour les 4 autres. Si je change la valeur du deuxième doublon, seule la valeur du premier doublon est modifié... Si je change n'importe quel autre doublon, rien ne se passe...
Je ne comprend pas pourquoi çà réagit ainsi!!! Alors évidement, dans 90% des cas il n'y aura que deux doublons, et cette requète fonctionnerait. Mais je doit prévoir les cas plus rares avec des doublons multiples, et là je m'en sort pas, mes doublons ne se mettent pas à jour entre eux correctement.
Quelqu'un à une idée?