Tri des données par Regroupement et dernier

Le
azertyminuss
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
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
chpa
Le #17595011
Bonjour,
Vous dîtes que vous avez essayé mais vous avez fait quoi au juste ?

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
LiR
Le #17595711
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






azertyminuss
Le #17597761
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 ...
LiR
Le #17598111
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 ...




Publicité
Poster une réponse
Anonyme