Bonjour,
J'ai une table de ce format là:
id_log | date | time | id_dp| id_user| id_etat
----------------------------------------------------------
1 | 2009-11-01 | 14:25:45 | 1 | 45 | 1
2 | 2009-11-02 | 14:25:45 | 2 | 45 | 5
3 | 2009-11-01 | 14:25:45 | 2 | 12 | 7
4 | 2009-11-15 | 17:12:17 | 1 | 25 | 8
5 | 2009-11-01 | 14:25:45 | 2 | 45 | 2
6 | 2009-11-15 | 16:32:52 | 1 | 17 | 6
7 | 2009-11-02 | 13:17:28 | 2 | 45 | 5
J'aimerais retourner la dernière entrée en date (et heure) pour chaque id_dp, ce qui devrait donner dans cet exemple :
4 | 2009-11-15 | 17:12:17 | 1 | 25 | 8
2 | 2009-11-02 | 14:25:45 | 2 | 45 | 5
J'ai essayé pas mal de méthodes et ce qui me semblait le plus proche était çà:
Le problème est que l'alias de table (D) n'est pas reconnu dans la sous-requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT * FROM ( SELECT * FROM `gdp_dp_log` WHERE (`gdp_dp_log`.`date` = (select max(`c`.`date`) AS `MAX(date)` from `gdp_dp_log` `C` where (`c`.`id_dp` = `gdp_dp_log`.`id_dp`))) ORDER BY `gdp_dp_log`.`id_dp` )D WHERE (`D`.`heure` = (select max(`D`.`heure`) AS `MAX(heure)` from `D` where (`d`.`id_dp` = `D`.`id_dp`))) ORDER BY `D`.`id_dp`
Si quelqu'un a une solution à me proposer, je suis preneur.
Merci d'avance
MySQL 5.0.51b
Partager