У мене є таблиця ("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
Я намагаюся створити подання цієї таблиці, яка б виводила лише останню запис на ідентифікатор користувача, при цьому даючи мені значення "в" або "виходити", так що:
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
Що близько, але не ідеально. Я знаю, що останньої групи by не повинно бути там, але без неї вона повертає останній час, але не з відносним значенням IO.
Будь-які ідеї? Дякую!