{Access} Select count(distinct champ) [Résolu/Fermé]

Signaler
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
-
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
-
Bonjour à tous,

j'utilise une base de données sous Access 2003 et j'aimerai faire un select count(distinct) mais comme malheureusement cela n'est pas natif dans ce SGBD, je souhaiterai que quelqu'un puisse m'aider s'il vous plaît. Voici une partie de ma requête :
                rsse15f.Open " Select count(*) as Nombre From TablePatient, TableConsultation, Tablestatut where (TablePatient.numpatient = TableConsultation.numpatient And Tablestatut.numstatut = TableConsultation.numstatut) " & _
                "   And TablePatient.sexepatient='F' " & _
                "   And TableConsultation.agepatient >= 15 " & _
                "   And Tablestatut.numstatut = " & i & " " & _
                "   And TableConsultation.dateconsultation between cdate('" & txtdate1.Text & "') and cdate('" & txtdate2.Text & "')", cn, adOpenDynamic, adLockOptimistic

Le résultat que j'attends est qu'il puisse m'afficher le nombre distinct de consultation par statut sachant que pour un même numéro de consultation j'ai le même statut.

NB: Je peux avoir par exemple 4 numéros de consultation identique et donc 4 statut identiques aussi. en définitive le nombre de consultation avec le numéro de consultation identique est égal au nombre de statut pour cette consultation. N'hésitez pas à me poser des questions d'éclaircissement.

Merci d'avance à mon sauveur.

Cordialement.

2 réponses

Bonjour,
Vive m$ acce$$.

J'ai pas regardé ta requête (ni vraiment ta demande),

Mais voici un exemple pour simuler un distinct,
Pour une table 'TABLE' avec un champ 'CHAMP' :

SELECT DISTINCT CHAMP FROM TABLE T

Pourrait-être écrit :

SELECT T1.CHAMP FROM TABLE T1
WHERE T1.rowid =
( SELECT MIN(T2.rowid) FROM TABLE T2
WHERE T2.CHAMP = T1.CHAMP )

En admettant qu'Access conaisse le ROWID, ce qui n'est pas forcément le cas mais il doit y avoir une notion équivalente...

Cordialement, M.
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
4
Bonjour swed et Merci pour ton intervention. Voici la solution à mon problème :

                rsse15f.Open " Select count(*) as Nombre From (Select distinct numconsultation TablePatient, TableConsultation, Tablestatut where (TablePatient.numpatient = TableConsultation.numpatient And Tablestatut.numstatut = TableConsultation.numstatut) " & _
                "   And TablePatient.sexepatient='F' " & _
                "   And TableConsultation.agepatient >= 15 " & _
                "   And Tablestatut.numstatut = " & i & " " & _
                "   And TableConsultation.dateconsultation between cdate('" & txtdate1.Text & "') and cdate('" & txtdate2.Text & "'))", cn, adOpenDynamic, adLockOptimistic


Excellente journée.

Cordialement