Access sql : requête éditable pour la recherche de doublons

Contenu du snippet

Imaginez que vous vouliez importer des enregistrements depuis une table d'import. Vous voudriez pouvoir détecter les doublons avant l'import effectif. Pour cela, le plus pratique est d'afficher une requête qui présente tous les doublons de la table d'import, et si la requête est éditable, alors l'utilisateur pourra choisir parmi les doublons les enregistrements à supprimer et ceux à conserver afin d'éliminer les doublons. Or pour qu'une requête de doublon soit éditable, il faut chercher un peu, car en général, les regroupements donnent des requêtes en lecture seule. Cependant, en imbriquant les requêtes avec la clause IN, il est tout à fait possible de faire une requête éditable (sous Access en tout cas) :

Source / Exemple :


SELECT * FROM ImportPersonne
WHERE ImportPersonne.Nom IN
    (SELECT ImportPersonne.Nom FROM ImportPersonne GROUP BY ImportPersonne.Nom HAVING Count(*)>1)
ORDER BY ImportPersonne.Nom;

Et si la clé unique de votre table est basée sur plusieurs champs, vous pouvez même enchaîner les clauses IN :

SELECT * FROM ImportPersonne
WHERE ImportPersonne.Nom IN
    (SELECT ImportPersonne.Nom FROM ImportPersonne GROUP BY ImportPersonne.Nom, ImportPersonne.Prenom HAVING Count(*)>1)
AND ImportPersonne.Prenom IN
    (SELECT ImportPersonne.Prenom FROM ImportPersonne GROUP BY ImportPersonne.Nom, ImportPersonne.Prenom HAVING Count(*)>1)
ORDER BY ImportPersonne.Nom, ImportPersonne.Prenom;

Conclusion :


Note : Il est possible de tester à part les requêtes de regroupement avant de les inclure dans une clause IN.
Source : Access 97 Developers's Handbook

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.