Bonjour,
Voici quelques enregistrements :Mon but étant de récupérer une clé pour chaque numéro la clé correspondant à la date de fin max. Ici, ce devrait être ofEkpKnXqsmD et KGlTqqndRVEd.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 +------------+--------------+------------+ | numero | cle | fin | +------------+--------------+------------+ | 0064015662 | ofEkpKnWjjbH | 2015-01-31 | | 0064015662 | ofEkpKnXqsmD | 2016-01-31 | | 0974202657 | KGlTqqndRVEd | 2015-05-31 | +------------+--------------+------------+
Mais ma requête me renvoie systématiquement la clé de la date la plus petite (enregistrement effectué chronologiquement en premier dans la base) :J'espérais que le group by récupèrerait le premier élément et du coup le "order by fin desc" me permettrait de récupérer les éléments de la date la plus grande... mais non
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select numero, cle, fin from t_cles where fin>=curdate() group by numero order by numero asc, fin desc
Du coup, j'ai fait cette requête qui semble fonctionner, mais elle fait intervenir "2" requêtes, ce qui me parait un peu lourdingue pour pas grand-chose :Avez-vous une idée de comment je pourrais faire de façon "simple" ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select numero, cle, fin from t_cles cle1 where fin>=curdate() and fin = (select max(cle2.fin) from t_cles cle2 where cle2.numero=cle1.numero)
Merci bien par avance.
Partager