SQL doublons sur plusieurs champs a la fois

Yann -  
 Yann -
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

  1. Defouille Messages postés 404 Statut Membre 54
     
    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
    1. Yann
       
      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