Aller au contenu

Select DateTime max et Group by id ?


A Prim

Sujets conseillés

Bonjour,

J'ai raté un épisode, soit une table avec 2 champs :

- categorie : varchar(40)

- top_chrono : datetime

Contenant :

'categorie 1' - '2005-08-08 18:12:40'

'categorie 2' - '2005-08-08 18:32:45'

'categorie 1' - '2005-08-08 18:32:25'

'categorie 1' - '2005-08-08 18:32:11'

'categorie 2' - '2005-08-08 18:12:55'

Le résultat désiré :

categorie top_chrono

categorie 1 2005-08-08 18:32:25

categorie 2 2005-08-08 18:32:45

Eh bien, je n'y arrive pas :

SELECT categorie, top_chrono FROM la_table WHERE top_chrono ='Ici je veux la valeur la + récente de la catégorie' GROUP BY categorie ORDER BY categorie.

Une petite suggestion, merci par avance.

Lien vers le commentaire
Partager sur d’autres sites

Salut ;)

Essaye :

SELECT categorie, max(top_chrono) AS plus_recent FROM la_table GROUP BY categorie ORDER BY categorie

Lien vers le commentaire
Partager sur d’autres sites

Merci pour la réponse,

Mais j'ai voulu trop simplifier pour poser ma question :

En fait ma table est constituée ainsi :

categorie - top_chrono - champ 2 - champ 3 - etc

et avec ce Select, j'obtiens bien le top_chrono le plus récent de la catégorie

mais les valeurs champs 2 - champ 3 - etc ne suivent pas la ligne retournée !

Etonnant...

:wacko:

Lien vers le commentaire
Partager sur d’autres sites

ah bah oui ils prendront la première valeur trouvée je crois..

SELECT categorie, top_chrono, autrechamp FROM la_table group by categorie ORDER BY categorie, top_chrono DESC

ça marche pas ça ?

Lien vers le commentaire
Partager sur d’autres sites

Eh bien non...

et du coté des sous-select non plus

dans le genre à peu près...:

SELECT categorie, top_chrono, autrechamp FROM la_table WHERE top_chrono=(SELECT MAX(top_chrono) FROM la_table)

:wacko:

Lien vers le commentaire
Partager sur d’autres sites

Dans ta sous requète il te faut regrouper par catégorie quand même, sinon elle est pas correcte !

SELECT categorie, top_chrono, autrechamp FROM la_table WHERE top_chrono=(SELECT MAX(top_chrono) FROM la_table GROUP BY categorie)

Mais bon ça me semble un peu lourd de faire une sous requète.. En même temps jsuis un peu fatigué, j'ai plus les yeux en face des trous, donc peut-être que quelqu'un pourra mieux t'aider ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...