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 :

Récupérer des doublons


Sujet :

Langage SQL

  1. #1
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut Récupérer des doublons
    Bonjour,

    Je viens de trouver un tuto qui explique comment trouver des doublons via une requête sql, mais le problème je n'arrive pas à l'adapter à mon cas.

    Le voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Champ1 --- Champs2
    Alain           622
    Jean           640
    Georges      655 
    Marc          622
    ici alain et marc ont le même numéro, ce qui ne doit pas être le cas.
    Je cherche donc une requête qui me permette de trouver ce doublon et de me renvoyer le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Champ1 --- Champs2
    Alain           622
    Marc          622
    Quelqu'un peut-il m'aider?

    MErci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Qu'avez-vous essayé ?
    Quel est votre SGBD ?

  3. #3
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    j'ai essayé une requete du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM contacts WHERE email IN 
    ( SELECT email FROM contacts GROUP BY email HAVING COUNT(email) > 1 )
    ou encore du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT Count(*), ChampsAvecDoublon FROM MyTableWithDuplicates 
    GROUP BY ChampsAvecDoublon HAVING Count(*) > 1
    MA base est firebird

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    ceci ne fonctionne pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM contacts WHERE email IN 
    ( SELECT email FROM contacts GROUP BY email HAVING COUNT(*) > 1 )

  5. #5
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    Citation Envoyé par Cybher Voir le message
    salut,

    ceci ne fonctionne pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM contacts WHERE email IN 
    ( SELECT email FROM contacts GROUP BY email HAVING COUNT(*) > 1 )
    Cette requete me fait planter mon appli...

  6. #6
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Il faut que tu utilises une auto-jointure et non une recherche de doublons classique :

    Table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE TEST_DOUBLON
    (
        TEST_ID INTEGER NOT NULL PRIMARY KEY,
        Champs1 varchar(32) NOT NULL,
        Champs2 INTEGER NOT NULL,
    )
    Données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO TEST_DOUBLON (TEST_ID, Champs1, Champs2) VALUES (1, 'Alain', 622)
    INSERT INTO TEST_DOUBLON (TEST_ID, Champs1, Champs2) VALUES (2, 'Jean', 640)
    INSERT INTO TEST_DOUBLON (TEST_ID, Champs1, Champs2) VALUES (3, 'George', 655)
    INSERT INTO TEST_DOUBLON (TEST_ID, Champs1, Champs2) VALUES (4, 'Marc', 622)
    Requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT
            Champs1 
          , Champs2
    FROM
    (       
    SELECT
            T1.Champs1
          , T1.Champs2
          , COUNT(T1.Champs2) AS Compte
    FROM
         TEST_DOUBLON T1 INNER JOIN TEST_DOUBLON T2
                         ON T1.Champs2 = T2.Champs2
    GROUP BY
            T1.Champs1
          , T1.Champs2
    HAVING
          COUNT(T1.Champs2) > 1
    ) Table1
    Résultat:
    Champs1 Champs2
    Alain........ 622
    Marc........ 622
    Reste que je ne connais pas Firebird. Peut-être n'aime-t-il pas les tables dérivées mais je te laisse gérer


  7. #7
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    salut à tous

    désolé pour mon absence (en congés et pas d'accès au net).

    Je viens de tester cette dernière solution, apparemment je ne peux pas rajouter de table dans ma base de donnée.

  8. #8
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Pas besoin de rajouter une table... C'est la même

    Auto-jointure...


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2014, 23h42
  2. Réponses: 5
    Dernier message: 18/09/2007, 10h12
  3. Réponses: 8
    Dernier message: 23/01/2007, 21h02
  4. Récupérer des données Excel vers Interbase ...
    Par Djedjeridoo dans le forum InterBase
    Réponses: 2
    Dernier message: 20/07/2003, 18h16
  5. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44

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