[mySQL] champ1 où max(date)

Fermé
Triptyque - 29 août 2008 à 10:10
 Triptyque - 29 août 2008 à 13:32
Bonjour,

Je cherche à récupérer les enregistrements qui ont la dernière date, je m'explique :

J'ai une table qui à la forme > ID, champ1, date

J'entre des enregistrement sous la forme > auto-increment, $valeur_champ1, CURDATE()

Je peu donc avoir

1, addr2, 2008-08-25
2, addr1, 2008-08-25
3, addr1, 2008-08-28
4, addr5, 2008-08-28

Et je veux afficher :

1, addr2, 2008-08-25
3, addr1, 2008-08-28
4, addr5, 2008-08-28

soit les lignes qui ont la date MAX pour champ1.


J'ai réussi par :

SELECT * FROM table as a HAVING a.date IN (SELECT MAX(b.date) FROM decouverte as b WHERE a.champ1 = b.champ1)

Pour information EXPLAIN me donne :

id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY a ALL NULL NULL NULL NULL 2629 Using filesort
2 DEPENDENT SUBQUERY b ALL NULL NULL NULL NULL 2629 Using where


Y a t'il plus rapide ?
A voir également:

2 réponses

vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
29 août 2008 à 12:21
Salut,

Perso, j'aurais fait ça :
SELECT ID,champ1,max(date) FROM `table` group by champ1

Dis nous si ça fonctionne correctement ...

@Bientôt
0
Non j'avais essayé, merci quand même.

J'abandonne et je fais en amont par php.
0