J'ai un tableau ("lms_attendance") des heures d'arrivée et de départ des utilisateurs qui ressemble à ceci:
id  user    time    io (enum)
1   9   1370931202  out
2   9   1370931664  out
3   6   1370932128  out
4   12  1370932128  out
5   12  1370933037  in
J'essaie de créer une vue de cette table qui afficherait uniquement l'enregistrement le plus récent par identifiant d'utilisateur, tout en me donnant la valeur «in» ou «out», donc quelque chose comme:
id  user    time    io
2   9   1370931664  out
3   6   1370932128  out
5   12  1370933037  in
Je suis assez proche jusqu'à présent, mais j'ai réalisé que les vues n'accepteraient pas les sous-requêtes, ce qui rend les choses beaucoup plus difficiles. La requête la plus proche que j'ai reçue était:
select 
    `lms_attendance`.`id` AS `id`,
    `lms_attendance`.`user` AS `user`,
    max(`lms_attendance`.`time`) AS `time`,
    `lms_attendance`.`io` AS `io` 
from `lms_attendance` 
group by 
    `lms_attendance`.`user`, 
    `lms_attendance`.`io`
Mais ce que j'obtiens c'est:
id  user    time    io
3   6   1370932128  out
1   9   1370931664  out
5   12  1370933037  in
4   12  1370932128  out
Ce qui est proche, mais pas parfait. Je sais que le dernier groupe de by ne devrait pas être là, mais sans lui, il renvoie l'heure la plus récente, mais pas avec sa valeur IO relative.
Des idées? Merci!