Recherche de doublons

elodie -  
 letissya -
Salut, J'arrête pas d'avoir des pb, j'en ai marre!

Cette fois ci, je voudrait chercher les doublons dans ma table de ma base qui est toujours sur MySQL sous windows.
Exactement, j'ai une table clients et je voudrait connaître ceux qui ont le même Telephone.
Voila ce que je fait:

SELECT Telephone FROM clients GROUP BY Telephone HAVING COUNT(Telephone)>1;

Et là, il m'affiche 2 clients mé qui ont des tel diférent:
RaisonSociale Telephone
essai 04.94.25.25.25
lbn 04.42.56.85.12

Au lieu de:
RaisonSociale Telephone
essai 04.94.25.25.25
clt 04.94.25.25.25

Merci de bien vouloir m'aider.

4 réponses

  1. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    Precisons le probleme veux tu...
    Tu as une table (simplifiee):

    Nom Tel
    aaa 999
    bbb 111
    ccc 999
    ddd 222
    eee 111

    et tu veux avoir en sortie de ta requete

    999 2
    111 2

    C'est ca?

    .  .
    \_/
    0
  2. elodie
     
    Ta compris le truc mais au lieu de m'afficher le nombre de doublons, je veux qu'il me les affiche carrément:

    aaa 999
    ccc 999
    bbb 111
    eee 111

    Merci de te pencher sur mon pb
    0
  3. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    OK...
    SELECT nom, tel, COUNT(tel) AS occurence FROM matable WHERE occurence>1 ; ca marche pas ca?

    En tout cas, tu ne peux pas utiliser un GROUP BY, cela regroupe les donnees selon ce critere...

    .  .
    \_/
    0
  4. elodie
     
    Non ca ne marche pas,
    Il me dit : Champ 'occurence' inconnu dans where clause.
    Par contre si je met le count dans le having, là il me met qu'un seul enregistrement.
    càd, sur
    aaa 999
    ccc 999
    il me donne que : aaa 999
    0
    1. Letissya
       
      Bonjour,

      J'ai le même problème que toi...
      J'ai une requête avec un group by et having mais ça ne me donne pas les doublons à cause du groupe by qui les supprime..

      je cherche une solution, si jamais tu en trouves une ce serait cool que tu me la transmette.. et dès que j'ai trouvé je te mail...

      merci
      0
    2. elodie > Letissya
       
      Salut, Désolé d'avoir tardé pour te répondre mais ca fé un bail que je vé plus sur ma boite email.
      Sinon,j'ai résolu mon problème en faisant 2 requêtes.
      La première sélectionne tous les téléphonnes de ma table, je les mets dans une variable.
      Et dans ma deuxième requête je sélectionne les clients qui ont le même téléphonne que que les N°Tel que g mis dans ma variable grace à la requête précédente.

      Je sé pas si ta compris le contexte mé ca fé longtem que g fait ca et je me souvien pas exactement de mon script.
      Mé je vé voir et en cas je te passe exactement la syntaxe.
      A plus
      0
    3. dmonnierfr Messages postés 13 Statut Membre 8 > elodie
       
      Je ne connais pas MySQL mais sur Oracle ou sur SQL Server, j'aurai écrit ceci :

      select A.nom,
      A.telephone
      from table as A,
      table as B
      where A.telephone = B.telephone
      and A.nom != B.nom
      0
    4. letissya > dmonnierfr Messages postés 13 Statut Membre
       
      Ben cela fonctionne, merci..
      Par contre j'aimerai aller un peu plus loin, je m'explique :
      j'aimerais pouvoi afficher en fonction du nombre de personne qui a le même numéro.

      Pour le moment j'ai un truc comme ça :
      aaa 999
      ccc 999
      fff 999
      bbb 111
      eee 111
      rrr 555
      ...

      et ce que j'aimerais c'est paramétrer en fonction du meme numéro de téléphone ma requete pour obtenir juste:
      aaa 999
      ccc 999
      fff 999

      ou

      bbb 111
      eee 111

      Je suis pas certaine que ce soit possible mais bon.
      0
    5. letissya > dmonnierfr Messages postés 13 Statut Membre
       
      Ben je viens de trouver la solution

      select A.nom,
      A.telephone
      from table as A,
      table as B
      where A.telephone = B.telephone
      and A.nom != B.nom
      group by A.nom, A.telephone
      having count(A.nom) = X

      X étant la valeur à paramétrer : 1, 2, 3, ....

      j'ai un petit bug néanmoins quand je met X = 2 il m'affiche tous les groupes de 3 personnes qui ont le meme tél.. mais bon
      Merci à tous pour votre aide
      0