IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

détecter les enregistrements en double (sur un champ)


Sujet :

Langage SQL

  1. #1
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut détecter les enregistrements en double (sur un champ)
    Bonjour à tous.

    J'aimerais savoir s'il était possible grace à une requete de sortir tout les champs qui était en double dans une table.

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Citation Envoyé par Phiss
    J'aimerais savoir s'il était possible grace à une requete de sortir tout les champs qui était en double dans une table.
    Qu'entends tu par champs en double ?

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Si ce sont des lignes en double, la requête est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT  *
    FROM    matable AS  T1
    WHERE EXISTS  (
            SELECT  1
            FROM    matable AS  T2
            WHERE   T1.col1 = T2.col1
              AND   T1.colN = T2.colN
            GROUP BY  T2.col1
                    , T2.colN
            HAVING  COUNT(*)  > 1
            )

  4. #4
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    Ce sont pas forcement la totalité de la ligne qui est en double mais seulement un champ d'une ligne qui se retrouve dans plusieurs lignes.
    Et moi je veux pouvoir ressortir tout ces doublons.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Tu prends la requête précédente et tu n'utilises que les noms de colonne qui t'intéressent.
    Si tu veux les lignes qui ont la colonne A en double ou la colonne B en double, il faudra faire deux requêtes. Mais en même temps, tu sauras où est le doublon...

  6. #6
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    En simplifiant le problème au max :

    (cherchez l'intrus ...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE GENS (
    id NUMBER (10),
    Nom VARCHAR2 (32));
     
    INSERT INTO Gens VALUES (1, 'Toto');
    INSERT INTO Gens VALUES (2, 'Franck');
    INSERT INTO Gens VALUES (3, 'Marcel');
    INSERT INTO Gens VALUES (4, 'Toto');
    COMMIT;
    L'intrus est Toto :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SQL> SELECT Nom, COUNT(id)
      2    FROM Gens
      3   GROUP BY Nom
      4  HAVING COUNT(id) > 1;
     
    NOM                               COUNT(ID)
    -------------------------------- ----------
    Toto                                      2
    Si le problème est plus complexe, merci de jeter un oeil à l'article de SQLPro, Les doublons.

  7. #7
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    merci à vous deux.

    Les deux marche.

    Cela me permet de voir la rapidité d'execution sur sql server par rapport à access...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les enregistrements sont doublés ?
    Par chicabonux dans le forum Access
    Réponses: 21
    Dernier message: 09/04/2010, 11h21
  2. [MySQL] Enlever les secondes en PHP sur un champ TIME
    Par yoyot dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/10/2008, 18h45
  3. [VBA]Compter les enregistrement suivant critère d'un champs
    Par wachoo31 dans le forum VBA Access
    Réponses: 9
    Dernier message: 27/04/2007, 07h42
  4. requette pour les enregistrements en double
    Par colombe dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/07/2006, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo