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

Tri des données par Regroupement et dernier

4 réponses
Avatar
azertyminuss
Bonjour,
voici mon soucis...
pour faire simple j'encode les noms, poids de la personne et date de
la pes=E9e via formulaires
ensuite via une requete, j'obtiens une liste de :
noms poids date
pol 85 10/02/2008
jean 90 15/02/2008
pol 88 15/04/2008
etc etc

j'aimerais obtenir une liste contenant seulement le poids le plus
r=E9cent pour chaque noms
j'ai essay=E9 regroupement et dernier pour date ; =E7a coince......

Merci pour votre aide

4 réponses

Avatar
chpa
Bonjour,
Vous dîtes que vous avez essayé mais vous avez fait quoi au juste ?

a écrit dans le message de
news:
Bonjour,
voici mon soucis...
pour faire simple j'encode les noms, poids de la personne et date de
la pesée via formulaires
ensuite via une requete, j'obtiens une liste de :
noms poids date
pol 85 10/02/2008
jean 90 15/02/2008
pol 88 15/04/2008
etc etc

j'aimerais obtenir une liste contenant seulement le poids le plus
récent pour chaque noms
j'ai essayé regroupement et dernier pour date ; ça coince......

Merci pour votre aide
Avatar
LiR
Bonjour,

C'est un problème classique des historiques, récupérer le dernier événement
en date et les informations le concernant.

Il faut pour cela 2 requêtes.

La première récupère la dernière date de pesée en regroupant sur nom (ou ID
de la personne) et en récupérant Max(date) As date_last (dernier événement en
date).
La seconde s'appuie sur cette première par une jointure sur les 2 champs nom
et date.

Imaginons que tu as une table PoidsHistorique avec les champs suivants :

ID_PERSONNE (ou directement nom, je ne sais pas)
date_pesee
poids

Requête 1 : PoidsLastPesee

SELECT ID_PERSONNE , Max(date_pesee) AS date_max
FROM PoidsHistorique GROUP BY ID_PERSONNE

Requête 2 : PoidsLast

SELECT PoidsHistorique.ID_PERSONNE, PoidsHistorique.poids AS DernierPoids
FROM PoidsLastPesee INNER JOIN PoidsHistorique ON (PoidsLastPesee.date_max =
PoidsHistorique.date_pesee) AND (PoidsLastPesee.ID_PERSONNE =
PoidsHistorique.ID_PERSONNE);

A noter que cela suppose qu'il n'y ait qu'une seule pesée par jour par
personne
(auquel cas on doit avoir un Index unique sur ID_PERSONNE et date_pesee),
sans quoi la requête PoidsLast renvera plusieurs poids en cours pour la même
personne.

En espérant que cela t'aidera...

"" a écrit :

Bonjour,
voici mon soucis...
pour faire simple j'encode les noms, poids de la personne et date de
la pesée via formulaires
ensuite via une requete, j'obtiens une liste de :
noms poids date
pol 85 10/02/2008
jean 90 15/02/2008
pol 88 15/04/2008
etc etc

j'aimerais obtenir une liste contenant seulement le poids le plus
récent pour chaque noms
j'ai essayé regroupement et dernier pour date ; ça coince......

Merci pour votre aide






Avatar
azertyminuss
Merci Lir ...
en fait, je crois que j'ai fait comme tu dis mais d'une autre manière
( une seule pesée par jour )
J'ai d'abord fait une requete regroupement sur
Id _nom , date ( avec max sur date )
ensuite une seconde requete basée sur la première
j'ai ajouter poids et lié Id_nom et date
ça donne le résultat voulu

Mais au cas ou il y aurait plusieurs pesées par jours, je vais
utiliser NOW() comme date, comme cela grace à l'heure cela
fonctionnera aussi

Merci pour tes infos ...
Avatar
LiR
C'est effectivement la solution que je proposais

L'ajout de l'heure dans la date de pesée est effectivement une bonne solution.

Je te conseille tout de même d'avoir un index unique sur les champs:
{ ID_nom ; istant_de_le_pesée}


"" a écrit :

Merci Lir ...
en fait, je crois que j'ai fait comme tu dis mais d'une autre manière
( une seule pesée par jour )
J'ai d'abord fait une requete regroupement sur
Id _nom , date ( avec max sur date )
ensuite une seconde requete basée sur la première
j'ai ajouter poids et lié Id_nom et date
ça donne le résultat voulu

Mais au cas ou il y aurait plusieurs pesées par jours, je vais
utiliser NOW() comme date, comme cela grace à l'heure cela
fonctionnera aussi

Merci pour tes infos ...