Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Access 2003, Requete sur 12 mois Glissant

8 réponses
Avatar
thegaz59
Bonjour à tous,

J'ai une base access 2003.

Dans une table, j'ai un champ Date (Format dd/mm/yyyy) et un champ Poid
(Réel).

J'aimerai faire une requête qui me renvoie la liste des poids sur 12 mois
glissant.

Pouvez-vous m'aider à construire cette requête ?

Merci d'avance

Gaël

8 réponses

Avatar
Eric
Bonjour,

Quand tu parles des 12 mois glissant, tu veux les 12 derniers mois je
suppose. Si c'est le cas tu crées une requête sur ta table, mets les
champs LaDate et LePoids et en critère sur le champ LaDate, tu mets :
Entre AjDate("m";-12;Date()) Et Date()

PS : nommer un champ Date est pas top, car il s'agit d'un mot réservé Access

thegaz59 a écrit :
Bonjour à tous,

J'ai une base access 2003.

Dans une table, j'ai un champ Date (Format dd/mm/yyyy) et un champ Poid
(Réel).

J'aimerai faire une requête qui me renvoie la liste des poids sur 12
mois glissant.

Pouvez-vous m'aider à construire cette requête ?

Merci d'avance

Gaël



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Richard_35
Bonjour Eric et thegaz59,

Il me semble comprendre que la table de thegaz59 est détaillée par jour et
qu'il faut faire un groupe par mois.

Une première requête R1 (par l'assistant, c'est plus simple) :
SELECT Year([date_test]) AS Année, Month([date_test]) AS Mois, Table2.Id,
Table2.date_test, Table2.lib
FROM Table2
ORDER BY Year([date_test]) DESC , Month([date_test]) DESC
=> le détail avec Année et Mois.

Une deuxième requête R2 (par l'assistant, c'est plus simple) :
SELECT TOP 12 Year([date_test]) AS Année, Month([date_test]) AS Mois,
Count(*) AS Expr1
FROM Table2
GROUP BY Year([date_test]), Month([date_test])
ORDER BY Year([date_test]) DESC , Month([date_test]) DESC
=> la même table groupée par Année/Mois descendant, et les 12 premiers.

Une troisième requête R3 (par l'assistant, c'est plus simple) :
SELECT Année_Mois_Group.Année, Année_Mois_Group.Mois,
Année_Mois_Group.Expr1, Année_Mois_Détail.Année, Année_Mois_Détail.Mois,
Année_Mois_Détail.Id, Année_Mois_Détail.date_test
FROM Année_Mois_Group INNER JOIN Année_Mois_Détail ON
(Année_Mois_Group.Année = Année_Mois_Détail.Année) AND (Année_Mois_Group.Mois
= Année_Mois_Détail.Mois)
=> La liaison de R2 avec R1 via Année et Mois (les 12 premiers en
descendant) et le détail qui correspond.

C'est le "TOP 12" couplé au "DESC" sur la requête goupée qui fait tout le
travail.
Passes par les assistants et, pour la requête groupée, forces "TOP 12" en
mode SQL.

Je ne sais pas si j'ai été très clair, sur ce coup là...

Dis-nous et bon courage,
Richard.
"Eric" a écrit :

Bonjour,

Quand tu parles des 12 mois glissant, tu veux les 12 derniers mois je
suppose. Si c'est le cas tu crées une requête sur ta table, mets les
champs LaDate et LePoids et en critère sur le champ LaDate, tu mets :
Entre AjDate("m";-12;Date()) Et Date()

PS : nommer un champ Date est pas top, car il s'agit d'un mot réservé Access

thegaz59 a écrit :
> Bonjour à tous,
>
> J'ai une base access 2003.
>
> Dans une table, j'ai un champ Date (Format dd/mm/yyyy) et un champ Poid
> (Réel).
>
> J'aimerai faire une requête qui me renvoie la liste des poids sur 12
> mois glissant.
>
> Pouvez-vous m'aider à construire cette requête ?
>
> Merci d'avance
>
> Gaël

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
Bonsoir Richard,

Mais avec ce que je donne, si les pesées se font quotidiennement, on
aura, quand même,les pesées sur les 12 derniers mois. Seul le nombre
d'enregistrements retournés sera différent puisque je sélectionne toutes
les pesées entre aujourd'hui et 12 mois avant aujourd'hui, par exemple
entre le 19/03/09 et le 19/03/08. Je n'ai pas compris qu'il souhaite les
12 dernières pesées comme ce que retourne ta requête R2.

Richard_35 a écrit :
Bonjour Eric et thegaz59,

Il me semble comprendre que la table de thegaz59 est détaillée par jour et
qu'il faut faire un groupe par mois.

Une première requête R1 (par l'assistant, c'est plus simple) :
SELECT Year([date_test]) AS Année, Month([date_test]) AS Mois, Table2.Id,
Table2.date_test, Table2.lib
FROM Table2
ORDER BY Year([date_test]) DESC , Month([date_test]) DESC
=> le détail avec Année et Mois.

Une deuxième requête R2 (par l'assistant, c'est plus simple) :
SELECT TOP 12 Year([date_test]) AS Année, Month([date_test]) AS Mois,
Count(*) AS Expr1
FROM Table2
GROUP BY Year([date_test]), Month([date_test])
ORDER BY Year([date_test]) DESC , Month([date_test]) DESC
=> la même table groupée par Année/Mois descendant, et les 12 premiers.

Une troisième requête R3 (par l'assistant, c'est plus simple) :
SELECT Année_Mois_Group.Année, Année_Mois_Group.Mois,
Année_Mois_Group.Expr1, Année_Mois_Détail.Année, Année_Mois_Détail.Mois,
Année_Mois_Détail.Id, Année_Mois_Détail.date_test
FROM Année_Mois_Group INNER JOIN Année_Mois_Détail ON
(Année_Mois_Group.Année = Année_Mois_Détail.Année) AND (Année_Mois_Group.Mois
= Année_Mois_Détail.Mois)
=> La liaison de R2 avec R1 via Année et Mois (les 12 premiers en
descendant) et le détail qui correspond.

C'est le "TOP 12" couplé au "DESC" sur la requête goupée qui fait tout le
travail.
Passes par les assistants et, pour la requête groupée, forces "TOP 12" en
mode SQL.

Je ne sais pas si j'ai été très clair, sur ce coup là...

Dis-nous et bon courage,
Richard.
"Eric" a écrit :

Bonjour,

Quand tu parles des 12 mois glissant, tu veux les 12 derniers mois je
suppose. Si c'est le cas tu crées une requête sur ta table, mets les
champs LaDate et LePoids et en critère sur le champ LaDate, tu mets :
Entre AjDate("m";-12;Date()) Et Date()

PS : nommer un champ Date est pas top, car il s'agit d'un mot réservé Access

thegaz59 a écrit :
Bonjour à tous,

J'ai une base access 2003.

Dans une table, j'ai un champ Date (Format dd/mm/yyyy) et un champ Poid
(Réel).

J'aimerai faire une requête qui me renvoie la liste des poids sur 12
mois glissant.

Pouvez-vous m'aider à construire cette requête ?

Merci d'avance

Gaël


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Richard_35
Bonjour Eric,

Eh non, la requête R2 :
- groupe par Année/Mois (GROUP BY) ;
- trie par ordre descendant (ORDER BY ... DESC) par Année/Mois ;
- compte les enregistrements (COUNT(*) pas nécessaire, mais ne mange pas
de pain) ;
- ne donne que les 12 derniers mois (TOP 12).

Ensuite, la requête R3 lie R2 à R1 via Année/mois, pour obtenir le détail
des poids des 12 derniers mois.

A bientôt,
Richard.

"Eric" a écrit :

Bonsoir Richard,

Mais avec ce que je donne, si les pesées se font quotidiennement, on
aura, quand même,les pesées sur les 12 derniers mois. Seul le nombre
d'enregistrements retournés sera différent puisque je sélectionne toutes
les pesées entre aujourd'hui et 12 mois avant aujourd'hui, par exemple
entre le 19/03/09 et le 19/03/08. Je n'ai pas compris qu'il souhaite les
12 dernières pesées comme ce que retourne ta requête R2.

Richard_35 a écrit :
> Bonjour Eric et thegaz59,
>
> Il me semble comprendre que la table de thegaz59 est détaillée par jour et
> qu'il faut faire un groupe par mois.
>
> Une première requête R1 (par l'assistant, c'est plus simple) :
> SELECT Year([date_test]) AS Année, Month([date_test]) AS Mois, Table2.Id,
> Table2.date_test, Table2.lib
> FROM Table2
> ORDER BY Year([date_test]) DESC , Month([date_test]) DESC
> => le détail avec Année et Mois.
>
> Une deuxième requête R2 (par l'assistant, c'est plus simple) :
> SELECT TOP 12 Year([date_test]) AS Année, Month([date_test]) AS Mois,
> Count(*) AS Expr1
> FROM Table2
> GROUP BY Year([date_test]), Month([date_test])
> ORDER BY Year([date_test]) DESC , Month([date_test]) DESC
> => la même table groupée par Année/Mois descendant, et les 12 premiers.
>
> Une troisième requête R3 (par l'assistant, c'est plus simple) :
> SELECT Année_Mois_Group.Année, Année_Mois_Group.Mois,
> Année_Mois_Group.Expr1, Année_Mois_Détail.Année, Année_Mois_Détail.Mois,
> Année_Mois_Détail.Id, Année_Mois_Détail.date_test
> FROM Année_Mois_Group INNER JOIN Année_Mois_Détail ON
> (Année_Mois_Group.Année = Année_Mois_Détail.Année) AND (Année_Mois_Group.Mois
> = Année_Mois_Détail.Mois)
> => La liaison de R2 avec R1 via Année et Mois (les 12 premiers en
> descendant) et le détail qui correspond.
>
> C'est le "TOP 12" couplé au "DESC" sur la requête goupée qui fait tout le
> travail.
> Passes par les assistants et, pour la requête groupée, forces "TOP 12" en
> mode SQL.
>
> Je ne sais pas si j'ai été très clair, sur ce coup là...
>
> Dis-nous et bon courage,
> Richard.
> "Eric" a écrit :
>
>> Bonjour,
>>
>> Quand tu parles des 12 mois glissant, tu veux les 12 derniers mois je
>> suppose. Si c'est le cas tu crées une requête sur ta table, mets les
>> champs LaDate et LePoids et en critère sur le champ LaDate, tu mets :
>> Entre AjDate("m";-12;Date()) Et Date()
>>
>> PS : nommer un champ Date est pas top, car il s'agit d'un mot réservé Access
>>
>> thegaz59 a écrit :
>>> Bonjour à tous,
>>>
>>> J'ai une base access 2003.
>>>
>>> Dans une table, j'ai un champ Date (Format dd/mm/yyyy) et un champ Poid
>>> (Réel).
>>>
>>> J'aimerai faire une requête qui me renvoie la liste des poids sur 12
>>> mois glissant.
>>>
>>> Pouvez-vous m'aider à construire cette requête ?
>>>
>>> Merci d'avance
>>>
>>> Gaël
>> --
>> A+
>> Eric
>> http://www.mpfa.info/
>> Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
>>

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Michel__D
Bonjour,

"thegaz59" a écrit dans le message de news:
Bonjour à tous,

J'ai une base access 2003.

Dans une table, j'ai un champ Date (Format dd/mm/yyyy) et un champ Poid (Réel).

J'aimerai faire une requête qui me renvoie la liste des poids sur 12 mois glissant.

Pouvez-vous m'aider à construire cette requête ?

Merci d'avance

Gaël



Essaye avec la requête ci-dessous :

SELECT *
FROM LaTable
WHERE ChampDate >= CDate("1/" & Month(Date()) & "/" & Year(Date())-1);
Avatar
Eric
re,

Je ne comprends pas pourquoi il faut passer par 3 requêtes pour arriver
au résultat.
Ce que je donne permet de sélectionner tous les enregistrements de pesée
qui ont eu lieu sur les 12 derniers mois puisque je prends l'intervalle
[aujourd'hui - 12 mois avant aujourd'hui]. On peut objecter que le
résultat retourné renvoie une valeur de trop, c'est dû à l'opérateur
Entre. Pour corriger, reste à mettre sur le champ LaDate
en critère : > AjDate("m";-12;Date()) et <= Date().

Ou alors, je dois aller revoir mes fondamentaux :-(

Mais là, il s'agit d'un débat qui risque de ne pas intéresser thegaz59
qui ne s'est toujours pas manifesté. A croire qu'il n'a plus de problème
sur le poids ;-)

Cordialement,
Eric

Richard_35 a écrit :
Bonjour Eric,

Eh non, la requête R2 :
- groupe par Année/Mois (GROUP BY) ;
- trie par ordre descendant (ORDER BY ... DESC) par Année/Mois ;
- compte les enregistrements (COUNT(*) pas nécessaire, mais ne mange pas
de pain) ;
- ne donne que les 12 derniers mois (TOP 12).

Ensuite, la requête R3 lie R2 à R1 via Année/mois, pour obtenir le détail
des poids des 12 derniers mois.

A bientôt,
Richard.



Avatar
thegaz59
Bonjour à tous.

Merci pour toute vos réponse.

Je vais utiliser la solution d'Éric, qui me convient sans problème.

Désolé pour le temps à répondre, mais je n'étais pas chez moi ces derniers
jours.

Encore merci à tous

Gaël

"Eric" a écrit dans le message de groupe de
discussion :
re,

Je ne comprends pas pourquoi il faut passer par 3 requêtes pour arriver au
résultat.
Ce que je donne permet de sélectionner tous les enregistrements de pesée
qui ont eu lieu sur les 12 derniers mois puisque je prends l'intervalle
[aujourd'hui - 12 mois avant aujourd'hui]. On peut objecter que le
résultat retourné renvoie une valeur de trop, c'est dû à l'opérateur
Entre. Pour corriger, reste à mettre sur le champ LaDate
en critère : > AjDate("m";-12;Date()) et <= Date().

Ou alors, je dois aller revoir mes fondamentaux :-(

Mais là, il s'agit d'un débat qui risque de ne pas intéresser thegaz59 qui
ne s'est toujours pas manifesté. A croire qu'il n'a plus de problème sur
le poids ;-)

Cordialement,
Eric

Richard_35 a écrit :
Bonjour Eric,

Eh non, la requête R2 :
- groupe par Année/Mois (GROUP BY) ;
- trie par ordre descendant (ORDER BY ... DESC) par Année/Mois ;
- compte les enregistrements (COUNT(*) pas nécessaire, mais ne mange
pas de pain) ;
- ne donne que les 12 derniers mois (TOP 12). Ensuite, la requête R3
lie R2 à R1 via Année/mois, pour obtenir le détail des poids des 12
derniers mois.

A bientôt,
Richard.






Avatar
Eric
Bonjour thegaz59,

J'avais l'impression que le fil ne t'appartenait plus d'où ma remarque.
Bonne continuation.
Tu remarqueras qu'ici, plus d'un est prêt à se pencher sur ton problème ;-)

thegaz59 a écrit :
Bonjour à tous.

Merci pour toute vos réponse.

Je vais utiliser la solution d'Éric, qui me convient sans problème.

Désolé pour le temps à répondre, mais je n'étais pas chez moi ces
derniers jours.

Encore merci à tous

Gaël




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr