У меня есть таблица ("lms_attendance") времени регистрации и ухода пользователей, которая выглядит так:
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
Я пытаюсь создать представление этой таблицы, которое выводило бы только самую последнюю запись для каждого идентификатора пользователя, давая мне значение «in» или «out», например:
id user time io
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in
Пока я довольно близок, но я понял, что представления не принимают подзапросы, что значительно усложняет задачу. Самый близкий мне запрос был:
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`
Но вот что я получаю:
id user time io
3 6 1370932128 out
1 9 1370931664 out
5 12 1370933037 in
4 12 1370932128 out
Что близко, но не идеально. Я знаю, что этой последней группы не должно быть, но без нее она возвращает самое последнее время, но не с относительным значением ввода-вывода.
Любые идеи? Спасибо!