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

Access Discussion :

Doublons sur requête


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Points : 34
    Points
    34
    Par défaut Doublons sur requête
    Bonjour,
    J'ai une table PERSONNE qui contient les champs TELEPHONE, NOM, PRENOM, ADRESSE, etc...
    J'ai la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT PERSONNE.Tel_Maison, "est à" AS [est à], PERSONNE.NomFamille, PERSONNE.Prénom
    FROM PERSONNE
    WHERE (((PERSONNE.Tel_Maison)<>" " And (PERSONNE.Tel_Maison) Is Not Null))
    ORDER BY PERSONNE.Tel_Maison, PERSONNE.NomFamille, PERSONNE.Prénom;
    L'exécution de la Requête donne:
    • 04 42 42 42 42 est à DUPOND Jean
      04 42 42 42 42 est à DUPOND Martine
      04 42 42 42 42 est à DUPOND Alain
      04 42 42 42 43 est à DURAND Paul
      04 42 42 42 44 est à BREMOND Nathan

    Le souci, vous l'aurez compris, c'est que les personnes qui vivent sous le même toit, ben, ils ont le même numéro de Téléphone !
    Le but est donc d'améliorer cette requête afin de ne pas avoir plusieurs fois le même Numéro
    J'ai essayer les instructions suivantes sans succès:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select DistinctRow 
    Select Distinct
    BY First
    Si je pouvais arriver, de façon "simple" à une liste comme celle-ci:
    • 04 42 42 42 42 est à DUPOND Jean, Martine, Alain
      04 42 42 42 43 est à DURAND Paul
      04 42 42 42 44 est à BREMOND Nathan
    se serait l'idéal

    D'avance Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Tu peux faire un group by, mais alors il faut éliminer les prénoms. Ce sont les prénoms qui différencient ten enregistrements.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    C'est bien ce que je me disais, car j'ai essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT PERSONNE.Tel_Maison, "est à" AS [est à], PERSONNE.NomFamille, PERSONNE.Prénom
    FROM PERSONNE
    GROUP BY PERSONNE.Tel_Maison, "est à", PERSONNE.NomFamille, PERSONNE.Prénom
    HAVING (((PERSONNE.Tel_Maison)<>" " And (PERSONNE.Tel_Maison) Is Not Null))
    ORDER BY PERSONNE.Tel_Maison, PERSONNE.NomFamille, PERSONNE.Prénom;
    mais cela ne change rien...
    En effet, le prénom m'est indispensable pour différencier les mêmes famille (oncle, tante etc...)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    Et si tu dis que tu veux le premier de chaque PERSONNE.Tel_Maison :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT First(PERSONNE.Tel_Maison)...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    Nan, que néni, j'ai déjà essayé...

  6. #6
    Membre averti Avatar de mcdotta
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 292
    Points : 324
    Points
    324
    Par défaut
    Hello, No Bru....


    Il faut que tu procèdes en deux temps mais malheureusement tu vas devoir recourir à du code et une table qui stockera les info que tu désires.

    Ta table s'appelle PERSONNE et la nouvelle tmpPERSONNE ; cette nouvelle table a pour champ :
    fldTel_Maison
    fldNomFamille
    fldPrénoms

    Voici le code ci-dessous, c'est un peu brut de fonderie, attention je l'ai écrit directement sur Développez.com donc je n'ai pas testé.

    Laisse nous savoir si cela te convient


    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Sub AlimenteTable()
     
       dim strSQL as string
       dim recSET as New ADODB.recordset
       dim recSETPrénom as New ADODB.recordset
       dim recSETTmp as New ADODB.recordset
       dim strPrénoms as string
     
       strSQL = "SELECT DISTINCT PERSONNE.Tel_Maison,   
       strSQL = strSQL & " PERSONNE.NomFamille
       strSQL = strSQL & "  FROM PERSONNE 
       strSQL = strSQL & " WHERE (((PERSONNE.Tel_Maison)<>" " And 
       strSQL = strSQL & " (PERSONNE.Tel_Maison) Is Not Null)) 
       recSET.Open strSQL, currentProject.connection,adOpenKeyset, adLockOptimistic   
     
       strSQL = "DELETE tmpPERSONNE FROM tmpPERSONNE"
       CurrentProject.Connection.Execute strSQL
       CurrentProject.Connection.Errors.Clear
     
       strSQL = "SELECT tmpPERSONNE.* FROM tmpPERSONNE"
       recSETPrénoms, currentProject.connection,adOpenKeyset, adLockOptimistic   
     
       if recSET.EOF = false and recSET.BOF = false then
          Do While Not recSET.EOF
              recSETPrénoms.AddNew
                 recSETPrénoms![fldTel_Maison] = recSET![Tel_Maison]
                 recSETPrénoms![fldNomFamille] = recSET![NomFamille]
     
                 strSQL = "SELECT PERSONNE.* FROM PERSONNE"
                 strSQL = strSQL & "WHERE PERSONNE.Tel_Maison='" 
                 strSQL = strSQL & recSET![Tel_Maison] &"'"
                 recSETTmp..Open strSQL, currentProject.connection,adOpenKeyset, adLockOptimistic   
     
                 If recSETTmp.EOF = false and recSETTmp.BOF = False then
                      Do While Not recSETTmp.EOF
                           if strPrénoms="" then
                               strPrénoms = recsetTMP![PRENOM]
                           else
                              strPrénoms = strPrénoms & "," & recsetTMP![PRENOM]
                           endif
                           recSETTMP.MoveNext
                     Loop
                 Endif
                 recSETTMP.Close
                 recSETPrénoms![fldPrénoms] = strPrénoms
                 recSETPrénoms.Update
            recSET.MoveNext
         Loop
      endif
     recSET.Close
    recSETTMP.Close
    End Sub

  7. #7
    Membre confirmé
    Avatar de Petogaz
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 479
    Points : 580
    Points
    580
    Par défaut
    salut,

    une fonction qu'a développée Tofalu et qui répond à ton problème http://access.developpez.com/sources...QLLigneColonne

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    Boudu !!!
    Ben, j'va cogiter tous ça,
    En tous K, merci infiniment à tous
    J'vous tiens au courant
    @+

  9. #9
    Nouveau membre du Club
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    Bonjour,
    Eh bien oui, grâce à vous mon problème est résolu !

    Un grand merci à "mcdotta" qui m'a filé un code qui, à quelques adaptations prêts, fonctionne à merveille
    (il manquait entre autre dans le tout premier strSQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY PERSONNE.Tel_Maison, PERSONNE.NomFamille
    mais j'étais prévenu)
    @+

  10. #10
    Membre averti Avatar de mcdotta
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 292
    Points : 324
    Points
    324
    Par défaut
    C'est coool.

    Merci pour ton feed-back

    Mc

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

Discussions similaires

  1. Doublon sur requête UNION
    Par miine dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/10/2014, 12h53
  2. [MySQL] Boucle sur requête JOIN et doublons
    Par gambic dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/01/2012, 15h18
  3. [MySQL] Doublons sur requêtes à trois tables
    Par cori79 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/05/2009, 02h59
  4. Réponses: 1
    Dernier message: 02/01/2008, 13h28
  5. problème de doublon sur les requêtes
    Par laurent7474 dans le forum Oracle
    Réponses: 6
    Dernier message: 08/12/2006, 10h31

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