SQL doublons sur plusieurs champs a la fois

Fermé
Yann - 27 juin 2010 à 22:35
 Yann - 2 juil. 2010 à 21:51
Bonjour,

Voici mon problème:

1 seule table avec des enregistrements du style:

Id Champ1 Champ2 Champ3 Champ4 Champ5...

Je souhaite afficher les doublons sur PLUSIEURS champs,
Je m'explique:

Je ne veut que les enregistrements qui ont en commun
le champ2 ET le champ3 ET le champ4

Merci de m'avoir lu et encore plus merci si vous avez la reponse :-)

A+ Yann

1 réponse

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
1 juil. 2010 à 09:37
Bonjour,

SELECT t1.* FROM ma_table as t1 INNER JOIN ma_table as t2 
ON t1.id != t2.id 
AND t1.champs1 = t2.champs1 
AND t1.champs2 = t2.champs2
AND t1.champs3 = t2.champs3


Cette requête t'affichera tout les champs qui ont un doublon.

Si tu fais
SELECT t1.id as id1, t2.id as id2
à la place du
SELECT t1.*
tu auras les identifiants des 2 champs qui sont doublons.

En espérant que ça t'aide :)
2
Merci beaucoup pour ton aide!

Ta requête m'est bien utile, j'ai jamais bien pigé les jointure...
Sinon j'avais trouvé ca:

SELECT DISTINCT *
FROM GEST_releves T1
WHERE EXISTS (SELECT *
FROM GEST_releves T2
WHERE T1.'Id_enregistr' <> T2.'Id_enregistr'
AND T1.'Brut_credit_ope' = T2.'Brut_credit_ope'
AND T1.'Brut_debit_ope' = T2.'Brut_debit_ope'
AND T1.'Date_ope_reel' = T2.'Date_ope_reel'
)

Problème la requête mettait 4 secondes pour s'exécuter sur une table encore jeune (petite)
Ta requête met 1.8 secondes c'est mieux !

Je suis néanmoins surpris qu'on ne puisse pas se débrouiller avec un simple GROUP BY qui est exécuté beaucoup plus rapidement.

En tout cas merci pour ton aide,
A+
Yann.
0