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 :

Comment retrouver les homonymes


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 18
    Points
    18
    Par défaut Comment retrouver les homonymes
    Bonjour

    Je cherche à retrouver les homonymes (nom et prénom) identique.Par exemple:

    NOM PRENOM
    Dupois Alain
    Olivier Ceban
    Dupont Serge
    Dupois Alain
    Dupont Serge

    Je voudrai en sortie:

    NOM PRENOM
    Dupois Alain
    Dupont Serge
    Dupois Alain
    Dupont Serge

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 801
    Points
    30 801
    Par défaut
    c'est une classique recherche de doublons...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT  tbl.*
    FROM    matable AS tbl
    WHERE   EXISTS
            (   SELECT  1
                FROM    matable AS dbl
                WHERE   dbl.nom     = tbl.nom
                    AND dbl.prenom  = tbl.prenom
                GROUP BY dbl.nom
                    ,   dbl.prenom
                HAVING  COUNT(*) > 1
            )
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Si tu as droit aux fonctions analytiques, je pense que la requête suivante sera plus efficace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT t.*
    FROM (
    SELECT a.*, ROW_NUMBER() OVER (PARTITION BY nom, prenom ORDER BY NULL) rk , count(*) OVER (PARTITION BY nom, prenom) cnt
    FROM TaTable a
    ) t
    WHERE  cnt > 1
      AND rk = 1 --genre si tu ne veux récupérer qu'une ligne par doublon
    (Correspond à un tri et une seule lecture de la table : on économise la semi jointure)

    Si tu n'as besoin que du nom / prénom, tu peux faire simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT nom, prenom
    FROM Tatable
    GROUP BY nom, prenom
    HAVING count(*) > 1

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 18
    Points
    18
    Par défaut
    Merci pour vos réponses mais ça ne résout pas mon problème avec ses requêtes c'est tout le contenu de ma table qui s'affiche

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Si ce sont bien les requêtes qui t'ont été proposées que tu as exécuté, c'est peut-être que toutes tes lignes sont en multiples exemplaires

    Tu trouveras peut-être plus d'informations dans le tutoriel de SQLPro sur Les doublons
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 18
    Points
    18
    Par défaut
    Non toutes les lignes ne sont pas en multiples exemplaires.Si non les requêtes m'affiche des lignes qui n'ont même pas de prénoms renseignés dans ma table.

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    A mon avis, c'est juste parce qu'on ne se comprend pas et/ou qu'il nous manque des données pour répondre à ton problème.

    Peux-tu fournir la structure de ta table sous forme de script CREATE TABLE ?
    Ca permettra d'adapter les requêtes d'exemple à ton cas... et donc d'éviter les mauvaises "traductions" qui introduisent des biais dans le résultats.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

Discussions similaires

  1. Comment retrouver les Dll ou les OCX suivantes?
    Par nnj dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 26/08/2007, 12h18
  2. Réponses: 3
    Dernier message: 26/02/2007, 10h14
  3. [DB2] Comment retrouver les bornes d'un intervalle
    Par martinm dans le forum Langage SQL
    Réponses: 13
    Dernier message: 15/01/2007, 08h01
  4. Comment retrouver les menus complets de Access ???
    Par sweety107 dans le forum Access
    Réponses: 3
    Dernier message: 20/12/2004, 11h33
  5. Comment retrouver les propriétés d'un fichier ?
    Par JuanLopez1966 dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 01/09/2004, 16h34

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