OVH Cloud OVH Cloud

Cumul dans une requête

11 réponses
Avatar
Titi
Bonjour à tous,

Je suis en train de créer une bdd pour gérer l'évolution du poids de
plusieurs personnes.
J ai deux tables : une avec les données nominatives des patients et l'autre
(sous-table de la première) avec les données des pesées.
Mon but est d'avoir le cumul des kilos perdus a chaque pesée pour chaque
patient, j'ai donc créé une requête dans ce sens. Cependant, mon problème
est que dans la requête, le cumul des kilos perdus se fait sur toutes les
pesées et tous les patients.
Comment pourrais-je donc faire pour avoir une requête qui me permette de
sélectionner un patient Y et d'avoir le cumul de ses kilos perdus, en
sachant que de nouveaux patients seront ajoutés progressivement et que
chaque patient déjà présent aura de nouvelles pesées ?

Quelqu'un pourrait-il m'aider ?
Merci à tous d'avance ! ;-)

Thierry

1 réponse

1 2
Avatar
Titi
Merci beaucoup pour ta réponse !
Ta solution m'est fort utile mais, il manque un élément, celui du cumul. En
effet, la solution que tu me donnes concerne le total des kilos perdus, or
comme je le disais dans mes autres posts, je cherche à avoir le cumul des
kilos perdus à chaque date de pesée pour un patient donné.

Désolé de te déranger encore !

Et merci encore !
@+
Thierry

"JMD" a écrit dans le message de news:
#
D'accord.

Essaies autrement. Fait une première R dans laquelle tu mets les champs
dont

tu as besoin, en particulier le N° Patient pour sélectionner le bon
patient.

C'est sur celle là que tu fais porter ton critère de sélection du patient.

Fait une seconde R, basée sur la première, dans laquelle tu mets
simplement

:
SELECT Patientspesées.[N° Patient], Sum(Patientspesées.[Kilos perdus]) AS
[SommeDeKilos perdus]
FROM PatientsDonnées INNER JOIN Patientspesées ON PatientsDonnées.[N°
Patient] = Patientspesées.[N° Patient]
GROUP BY Patientspesées.[N° Patient];

En effet, exécutée seule, cette R donne bien le total des Lilos_perdus.

J'ai essayé avec succès.

A +


"Titi" <exfily{NOSPAM}@hotmail.com> a écrit dans le message de news:
bpvha8$cvp$
Re !

Merci pour ta réponse et désolé pour la confusion, mais j'avoue que moi
aussi je suis perdu !
Alors en fait le champ kilos_perdus dans la table est utile puisqu'il me
permet, grâce à un formulaire, de mettre à chaque date de pesée un
nombre


de
kilos perdus pour un patient donné comme par exemple suit :
- N° Patient / Date de pesée / Kilos perdus
- 2 / 22/11/2003 / 3,6
- 3 / 23/11/2003 / 2.9
- 2 / 24/11/2003 / 3.1
Ce qui est calculé dans la requête c'est le cumul des kilos perdus comme
suit :
- N° Patient / Date de pesée / Kilos perdus / Cumul des kilos perdus
- 2 / 22/11/2003 / 3,6 / 3,6
- 3 / 23/11/2003 / 2.9 / 6,5
- 2 / 24/11/2003 / 3.1 / 9,6
Voici le code sql :
SELECT PatientsPesées.[N° Patient] AS [PatientsPesées_N° Patient],
PatientsDonnées.Nom, PatientsDonnées.Prénom, PatientsDonnées.[Date de
naissance], PatientsPesées.[Date de pesée], PatientsPesées.[Kilos
perdus],


CDbl(DSum("[Kilos perdus]","PatientsPesées","[Date de pesée]<=" &
DateUS([Date de pesée]))) AS [Perte de poids cumulée]
FROM PatientsDonnées INNER JOIN PatientsPesées ON PatientsDonnées.[N°
Patient] = PatientsPesées.[N° Patient];

Et donc mon problème est le suivant : dans la requête, le cumul des
kilos


perdus se fait sur tous les patients (comme tu peux le constater sur
l'exemple si dessus). Or, si je fais un tri sur le patient j'obtiens
ceci


:
- N° Patient / Date de pesée / Kilos perdus / Cumul des kilos perdus
- 2 / 22/11/2003 / 3,6 / 3,6
- 2 / 24/11/2003 / 3.1 / 9,6
Le cumul est erroné.
Et je voudrais obtenir cela :
- N° Patient / Date de pesée / Kilos perdus / Cumul des kilos perdus
- 2 / 22/11/2003 / 3,6 / 3,6
- 2 / 24/11/2003 / 3.1 / 6.7

Voilà, j'espère être plus clair ! :-) Dis-moi si c'est le cas !
@+
Thierry

"JMD" a écrit dans le message de news:

Oups, je ne suis plus...
Déjà, je ne comprends pas à quoi sert le champ kilos_perdus dans la
table


si
c'est un champ calculé dans la requête ?
Ensuite, si tu fais ce calcul pour le patient toto, tu as tout de même
le


résultat pour tous les patiens ?
Peut-tu poster le code SQL de ta requête ?

A +



"Titi" <exfily{NOSPAM}@hotmail.com> a écrit dans le message de news:
bpv90n$gvc$
Bonjour et merci encore pour ta réponse !

En ce qui concerne la sélection du patient, c'est ok. Mais j'ai
toujours



ce
problème de cumul qui ne s'effectue pas correctement.
Mes 2 tables sont ainsi : Table A (Données nominatives des patients
:




n°patient, nom, prénom, date de naissance) et Table B (Données des
pesées


des patients : n° patient, date de pesée, poids, kilos perdus). B
est




sous-table de A liée par le champ "n° patient" par une relation un à
plusieurs. Ainsi, un patient a plusieurs pesées.
Dans ma requête, j'ai donc extrait les nom, prénom, date de
naissance




de
la
table A et les pesées correspondantes dans la table B et fait le
cumul




des
kilos perdus. Mais comme je l'ai déjà expliqué, mon cumul se fait
sur




tous
les patients et non sur un patient. Il faudrait donc que je puisse
sélectionner un patient X et faire en sorte que le cumul s'effectue
uniquement sur ce patient. Comment donc, pourrais-je indiquer à
Access




que
ce cumul doit s'effectuer uniquement apres sélection du patient et
donc



de
ses pesées ? Mon cumul s'effectue par CDbl(SomDom("[Kilos
perdus]";"PatientsPesées";"[Date de pesée]<=" & DateUS([Date de
pesée]))).



Merci beaucoup pour ton aide car je suis complètement perdu, là où
alors



je
n'y comprends plus rien ! :)
@+
Thierry

"JMD" a écrit dans le message de news:

Bonjour,

c'est pareil. Moi, j'ai utilisé le champ nom dans la partie
HAVING,





parce
que je suppose que c'est le lien entre la table des patients et la
table



des
poids. C'est un raccourcis commode, ça ne change par le calcul.

Si tu veux pouvoir choisir le patient depuis un formulaire, il
suffit




de
faire une requête paramétrée, cad qui sélectionne le patient en
fonction



de
la valeur d'un des champs du formulaire (par exemple, N° SS).

Dans la zone Ctritère de la requête, pour ce champ, tu mets
Forms!NomDuFormulaire!NomDuChamp.

Dis moi si c'est OK

Cordialement,

"Titi" <exfily{NOSPAM}@hotmail.com> a écrit dans le message de
news:





bptoif$9ac$
Merci pour ta réponse.

Il semblerait que cela soit ça. Cependant, je crois que je me
suis






mal
exprimé.
En effet, d'après ce que tu viens de me fournir, je sous-entends
que





dans
la
partie "HAVING (((poids.nom)="toto"))", il faudrait que j'ajoute
dans




cette
sous-requête les noms des patients (ici schématisés sous
l'appellation




"toto") ; or, dans ma base, il y a deux tables : une table A,
et une table B (sous-table de A liée par un champ commun à A).
Et






cette
base
est faite de façon à ce que je puisse ajouter des nouveaux
patients





et
de
façon à ce que des pesées puissent être ajoutées à des patients
déjà





existant ; et tout ça grâce à des formulaires.
Ma requête se décompose comme suit :
N° patient (A), Nom (A), Prénom (A), Date de pesée (B), Poids
(B),






Kilos
perdus(B) et Cumul_kilos_perdus.
Donc, en gros, ma requête doit pouvoir me permettre de
sélectionner





un
nom
deja présent et que cette requête calcule automatiquement le
cumul





de
poids
pour ce patient (quelque soit le nombre de pesées) tout en
sachant






que
je
connais pas à l'avance le nom du patient.

Merci d'avance pour l'aide ! ;-)
Thierry
"JMD" a écrit dans le message de news:

SELECT poids.nom, Sum(poids.poids) AS SommeDepoids
FROM poids
GROUP BY poids.nom
HAVING (((poids.nom)="toto"));

Non ?

"Titi" <exfily{NOSPAM}@hotmail.com> a écrit dans le message de
news:





bplk1t$k63$
Merci pour ta réponse ! ;-)
En fait, perdus depuis la premiere pesée.
Par exemple, ma requête ce fait dela sorte :
- Nom / Date de pesée / Kilos perdus / Cumul des kilos
perdus








(calculé
grâce
à la fonction SomDom() )
- Z / 14/02/2000 / 4 / 4
- Y / 01/03/2000 / 2 / 6
- Z / 29/04/2000 / 1 / 7
- Y / 01/05/2000 / 3 / 10
Mon probleme est que si je sélectionne par exemple le
patient








Z,
le
résultat
est :
- Z / 14/02/2000 / 4 / 4
- Z / 29/04/2000 / 1 / 7
Or là, moi je souhaiterais que la requête puisse faire le
calcul







de
la
maniere suivante:
- Z / 14/02/2000 / 4 / 4
- Z / 29/04/2000 / 1 / 5
Comment pourrais-je faire ?
Merci.
Thierry

"JMD" a écrit dans le message de news:
#
Perdus depuis quand ?
Depuis la dernière pesée ou depuis la première ?
A part ça, où est la difficulté ? Il suffit de spécifier
le









nom
du
patient
dans la requête, non ?

A +

"Titi" <exfily{NOSPAM}@hotmail.com> a écrit dans le
message









de
news:
bpla64$23c$
Bonjour à tous,

Je suis en train de créer une bdd pour gérer l'évolution
du









poids
de
plusieurs personnes.
J ai deux tables : une avec les données nominatives des
patients







et
l'autre
(sous-table de la première) avec les données des pesées.
Mon but est d'avoir le cumul des kilos perdus a chaque
pesée









pour
chaque
patient, j'ai donc créé une requête dans ce sens.
Cependant,









mon
problème
est que dans la requête, le cumul des kilos perdus se
fait









sur
toutes
les
pesées et tous les patients.
Comment pourrais-je donc faire pour avoir une requête
qui










me
permette
de
sélectionner un patient Y et d'avoir le cumul de ses
kilos










perdus,
en
sachant que de nouveaux patients seront ajoutés
progressivement







et
que
chaque patient déjà présent aura de nouvelles pesées ?

Quelqu'un pourrait-il m'aider ?
Merci à tous d'avance ! ;-)

Thierry















































1 2