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

VBA Access Discussion :

malgré le "DISTINCT" je trouve des doublants


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut malgré le "DISTINCT" je trouve des doublants
    Bonjour,

    Voici ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT  p.NIPATIENT, Left([r6].[REPONSE],40) AS Expr1, p.NOM, p.PRENOM, p.PATRONYME, p.DATENAIS
    FROM...
    ma requête s'execute sans problème, mais quand je regarde les résultats, je trouve quand même des doublants
    qu'est ce qu'il faut changer dans ma requête pour ne plus avoir de doublant dans les résultats?

    Je vous remercie d'avance.

  2. #2
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Tu ne donnes que le début de ton instruction SQL => utilises-tu un Group By ? Si c'est le cas, tu dois utiliser un Where sur le champs r6.REPONSE.

    Christophe

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Voici ma requête sous Access 2000:
    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
    SELECT DISTINCT p.NIPATIENT, Left([r6].[REPONSE],40) AS Expr1, p.NOM, p.PRENOM, p.PATRONYME, p.DATENAIS
    FROM PENSOINS_BM_LIB_S AS lib3, 
    PENSOINS_BM_LIB_S AS lib4,
    PENSOINS_BM_LIB_S AS lib5, 
    PENSOINS_BM_LIB_S AS lib6, 
    PENSOINS_C_QUESTION AS q3, 
    PENSOINS_BM_REP_S AS r3,
    PENSOINS_C_QUESTION AS q4, 
    PENSOINS_BM_REP_S AS r4, 
    PENSOINS_C_QUESTION AS q5, 
    PENSOINS_BM_REP_S AS r5, 
    PENSOINS_C_QUESTION AS q6, 
    PENSOINS_BM_REP_S AS r6, 
    PENSOINS_BM_TH_S AS th3,
     PENSOINS_SEJOUR AS sj,
    PENSOINS_PATIENT AS p
    WHERE (((p.NIPATIENT)=[sj].[NIPATIENT]) 
    AND ((lib3.PARENTE) Like '674,%')
    AND ((lib3.NIQ)=[q3].[NIQ]) 
    AND ((lib3.NILIB)=[r3].[NILIB]) 
    AND ((lib3.NIQSUP) Is Null)
    AND ((lib3.NILIBSUP) Is Null) 
    AND ((lib3.NITH)=[th3].[NITH] 
    And (lib3.NITH)=[lib5].[NITH] 
    And (lib3.NITH)=[lib4].[NITH] 
    And (lib3.NITH)=[lib6].[NITH]) 
    AND ((lib4.NIQ)=[q4].[NIQ]) 
    AND ((lib4.NILIB)=[r4].[NILIB]) 
    AND ((q4.LIBABR) Like 'Date de l%') 
    AND ((lib5.NIQ)=[q5].[NIQ]) 
    AND ((lib5.NILIB)=[r5].[NILIB]) 
    AND ((q5.LIBABR) Like 'Heure de l%') 
    AND ((lib6.NIQ)=[q6].[NIQ]) 
    AND ((lib6.NILIB)=[r6].[NILIB]) 
    AND ((q6.LIBABR) Like 'Numéro de dossier appareil EFR%') 
    AND ((sj.NISEJOUR)=[th3].[NISEJOUR]) 
    AND ((Exists (select 1 from PENSOINS_BM_LIB_S lib1 where lib1.PARENTE like '674,%' and lib3.NIQ = Lib1.NIQSUP))=False));
    Tu vas remarquer qu'il y'a plus de table que ce que j'en ai vraiment besoin; en fait, c'est la même requête que j'utilise pour les autres insertions, j'ajoute juste les champs dont j'ai besoin dans la clause select, ici par exemple je n'ai besoin que des identifiants des patients.

    je te remercie encore.

  4. #4
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    J'ai d'abord pensé que tu faisais des Group By ce qui n'est pas le cas.

    Je ne vois pas directement le problème. Pour sûr cela à avoir avec la multitude de tables que tu utilises. As-tu déjà essayé en supprimant les tables inutilisées ?

    Christophe

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    je vais essayer de faire ça, merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Voilà j'ai tout simplifié et pour tester j'ai mis
    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
    select DISTINCT p.NIPATIENT, r6.REPONSE, p.NOM, p.PRENOM,p.PATRONYME, p.DATENAIS
    from PENSOINS.BM_LIB_S lib3,
    PENSOINS.C_QUESTION q3,
    PENSOINS.BM_REP_S r3,
    PENSOINS.BM_LIB_S lib6,
    PENSOINS.C_QUESTION q6,
    PENSOINS.BM_REP_S r6,
    PENSOINS.BM_TH_S th3,
    PENSOINS.SEJOUR sj, 
    PENSOINS.PATIENT p
    where lib3.PARENTE like '674,%'
    and lib3.NIQ = q3.NIQ 
    and lib3.NILIB = r3.NILIB
    and lib3.NIQSUP is NULL
    and lib3.NILIBSUP is NULL
    and lib3.NITH = th3.NITH
    and lib6.NIQ = q6.NIQ 
    and lib6.NILIB = r6.NILIB
    and q6.LIBABR like 'Numéro de dossier appareil EFR%'
    and lib3.NITH = lib6.NITH
    and sj.NISEJOUR = th3.NISEJOUR
    and p.NIPATIENT = sj.NIPATIENT
    and not exists (select 1 from PENSOINS.BM_LIB_S lib1 where lib1.PARENTE like '674,%' and lib3.NIQ = Lib1.NIQSUP)
    ORDER BY 1,3
    j'obtiens quand même des doublants

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

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