У меня есть таблица ( "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
Это близко, но не идеально. Я знаю, что последняя группа не должна быть там, но без нее она возвращает самое последнее время, но не с относительным значением IO.
Любые идеи? Спасибо!