Bonjour,

Voici quelques enregistrements :
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 |
+------------+--------------+------------+
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.
Mais ma requête me renvoie systématiquement la clé de la date la plus petite (enregistrement effectué chronologiquement en premier dans la base) :
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
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

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 :
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)
Avez-vous une idée de comment je pourrais faire de façon "simple" ?
Merci bien par avance.