OVH Cloud OVH Cloud

Imbrication de requêtes

7 réponses
Avatar
Eric Beaumard
Bonjour

Avec Access 2002 je voudrais créer un champ (C1) qui soit
égale à un champ numérique (C0) divisé par
sa moyenne Avg(C0) (normalisation).

Je sais le faire en calculant d'abord
Avg(C0) avec une requete R1 et en récupérant
ce résultat dans une autre requête R2 qui
produit C1 en divisant C0 par le résultat de R1.

Mais comment faire le tout en une seule requête ?

Cordialement.

Beaumard Eric

7 réponses

Avatar
Manu
Bonjour Eric,

Essaye ceci en supposant que ta table s'appele table1
C1: [C0]/MoyDom("C0";"Table1")

Manu
www.logik64.com


-----Message d'origine-----

Bonjour

Avec Access 2002 je voudrais créer un champ (C1) qui soit
égale à un champ numérique (C0) divisé par
sa moyenne Avg(C0) (normalisation).

Je sais le faire en calculant d'abord
Avg(C0) avec une requete R1 et en récupérant
ce résultat dans une autre requête R2 qui
produit C1 en divisant C0 par le résultat de R1.

Mais comment faire le tout en une seule requête ?

Cordialement.

Beaumard Eric


.



Avatar
Eric Beaumard
Merci Manu. Mais j'ai la version anglaise
d'Access. La moyenne c'est "Avg" (pour average)
mais ça ne prend qu'un seul argument.

Je ne vois pas trop ce que peut être ta fonction
en anglais !

Eric

Bonjour Eric,

Essaye ceci en supposant que ta table s'appele table1
C1: [C0]/MoyDom("C0";"Table1")



Manu
www.logik64.com


-----Message d'origine-----

Bonjour

Avec Access 2002 je voudrais créer un champ (C1) qui soit
égale à un champ numérique (C0) divisé par
sa moyenne Avg(C0) (normalisation).

Je sais le faire en calculant d'abord
Avg(C0) avec une requete R1 et en récupérant
ce résultat dans une autre requête R2 qui
produit C1 en divisant C0 par le résultat de R1.

Mais comment faire le tout en une seule requête ?

Cordialement.

Beaumard Eric


.



Avatar
Manu
No problems
C1: [C0]/Davg("C0";"Table1")
Bye

-----Message d'origine-----
Merci Manu. Mais j'ai la version anglaise
d'Access. La moyenne c'est "Avg" (pour average)
mais ça ne prend qu'un seul argument.

Je ne vois pas trop ce que peut être ta fonction
en anglais !

Eric

Bonjour Eric,

Essaye ceci en supposant que ta table s'appele table1
C1: [C0]/MoyDom("C0";"Table1")



Manu
www.logik64.com


-----Message d'origine-----

Bonjour

Avec Access 2002 je voudrais créer un champ (C1) qui soit
égale à un champ numérique (C0) divisé par
sa moyenne Avg(C0) (normalisation).

Je sais le faire en calculant d'abord
Avg(C0) avec une requete R1 et en récupérant
ce résultat dans une autre requête R2 qui
produit C1 en divisant C0 par le résultat de R1.

Mais comment faire le tout en une seule requête ?

Cordialement.

Beaumard Eric


.




.




Avatar
Eric Beaumard
J'ai essayé
C1: [C0]/Avg([C0]) mais ça ne fait que diviser chaque enregistrement de C0
par lui-même (Avg(C0) ne porte pas sur tout le champ C0 mais seulement sur
l'enregistrement !!! ). Donc je n'obtiens que des 1 ....

--
Beaumard Eric
"Eric Beaumard" a écrit dans le message de
news:40099f87$0$1163$

Bonjour

Avec Access 2002 je voudrais créer un champ (C1) qui soit
égale à un champ numérique (C0) divisé par
sa moyenne Avg(C0) (normalisation).

Je sais le faire en calculant d'abord
Avg(C0) avec une requete R1 et en récupérant
ce résultat dans une autre requête R2 qui
produit C1 en divisant C0 par le résultat de R1.

Mais comment faire le tout en une seule requête ?

Cordialement.

Beaumard Eric




Avatar
Eric Beaumard
Très bien cette fois c'est mieux. Mais j'ai encore
un p'tit pb. Ton Davg("C0";"Table1") calcule
la moyenne du champ Table1 non filtré !!
Alors que moi j'ai dans ma requête un champ C0 qui est
une version filtrée de celui de Table1 !
Donc ton Davg("C0";"Table1") ne donne
pas la bonne moyenne.

Ca m'épaterait que tu arrives à résoudre ce problème;
Il faudrait prendre le C0 de la requête elle-même (la version
filtrée du C0 de Table1) comme argument de Davg ...

:o)))

Eric




--
Beaumard Eric
"Manu" a écrit dans le message de
news:00f201c3dd46$68887b50$
No problems
C1: [C0]/Davg("C0";"Table1")
Bye

-----Message d'origine-----
Merci Manu. Mais j'ai la version anglaise
d'Access. La moyenne c'est "Avg" (pour average)
mais ça ne prend qu'un seul argument.

Je ne vois pas trop ce que peut être ta fonction
en anglais !

Eric

Bonjour Eric,

Essaye ceci en supposant que ta table s'appele table1
C1: [C0]/MoyDom("C0";"Table1")



Manu
www.logik64.com


-----Message d'origine-----

Bonjour

Avec Access 2002 je voudrais créer un champ (C1) qui soit
égale à un champ numérique (C0) divisé par
sa moyenne Avg(C0) (normalisation).

Je sais le faire en calculant d'abord
Avg(C0) avec une requete R1 et en récupérant
ce résultat dans une autre requête R2 qui
produit C1 en divisant C0 par le résultat de R1.

Mais comment faire le tout en une seule requête ?

Cordialement.

Beaumard Eric


.




.




Avatar
Eric Beaumard
Ah ben non. Access m'a étonné !
j'ai simplement écrit C1: [C0]/Davg("C0";"R")
avec R le nom de ma requête et Access a digéré ca !!
Et ça marche ! super !






--
Beaumard Eric
"Eric Beaumard" a écrit dans le message de
news:4009c073$0$1169$
Très bien cette fois c'est mieux. Mais j'ai encore
un p'tit pb. Ton Davg("C0";"Table1") calcule
la moyenne du champ Table1 non filtré !!
Alors que moi j'ai dans ma requête un champ C0 qui est
une version filtrée de celui de Table1 !
Donc ton Davg("C0";"Table1") ne donne
pas la bonne moyenne.

Ca m'épaterait que tu arrives à résoudre ce problème;
Il faudrait prendre le C0 de la requête elle-même (la version
filtrée du C0 de Table1) comme argument de Davg ...

:o)))

Eric




--
Beaumard Eric
"Manu" a écrit dans le message de
news:00f201c3dd46$68887b50$
No problems
C1: [C0]/Davg("C0";"Table1")
Bye

-----Message d'origine-----
Merci Manu. Mais j'ai la version anglaise
d'Access. La moyenne c'est "Avg" (pour average)
mais ça ne prend qu'un seul argument.

Je ne vois pas trop ce que peut être ta fonction
en anglais !

Eric

Bonjour Eric,

Essaye ceci en supposant que ta table s'appele table1
C1: [C0]/MoyDom("C0";"Table1")



Manu
www.logik64.com


-----Message d'origine-----

Bonjour

Avec Access 2002 je voudrais créer un champ (C1) qui soit
égale à un champ numérique (C0) divisé par
sa moyenne Avg(C0) (normalisation).

Je sais le faire en calculant d'abord
Avg(C0) avec une requete R1 et en récupérant
ce résultat dans une autre requête R2 qui
produit C1 en divisant C0 par le résultat de R1.

Mais comment faire le tout en une seule requête ?

Cordialement.

Beaumard Eric


.




.








Avatar
Anor
Bonjour,

Eric Beaumard :
| Très bien cette fois c'est mieux. Mais j'ai encore
| un p'tit pb. Ton Davg("C0";"Table1") calcule
| la moyenne du champ Table1 non filtré !!
| Alors que moi j'ai dans ma requête un champ C0 qui est
| une version filtrée de celui de Table1 !
| Donc ton Davg("C0";"Table1") ne donne
| pas la bonne moyenne.
|
| Ca m'épaterait que tu arrives à résoudre ce problème;
| Il faudrait prendre le C0 de la requête elle-même (la version
| filtrée du C0 de Table1) comme argument de Davg ...
|

Eh bien, les fonctions de domaine fonctionnennt aussi sur les requêtes :
fais
Davg("C0";"TaRequête")
ou bien
Davg("C0";"Table1";"Lechampdelatable = " & lenombre )
ou
Davg("C0";"Table1";"Lechampdelatable = '" & letexte & "'" )
ou
Davg("C0";"Table1";"Lechampdelatable = #" & ladate & "#")

--
à+
Arnaud
--------------------------------------------------
*Avant toute chose* : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------