Tôi có một bảng ("lms_attendance") về thời gian đăng ký và ra của người dùng giống như thế này:
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
Tôi đang cố gắng tạo chế độ xem bảng này sẽ chỉ xuất ra bản ghi gần đây nhất cho mỗi id người dùng, trong khi đưa cho tôi giá trị "vào" hoặc "ra", vì vậy đại loại như:
id user time io
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in
Cho đến nay tôi khá gần, nhưng tôi nhận ra rằng các lượt xem sẽ không chấp nhận các truy vấn con, điều này làm cho nó khó hơn rất nhiều. Truy vấn gần nhất tôi nhận được là:
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`
Nhưng những gì tôi nhận được là:
id user time io
3 6 1370932128 out
1 9 1370931664 out
5 12 1370933037 in
4 12 1370932128 out
Mà gần, nhưng không hoàn hảo. Tôi biết rằng nhóm cuối cùng không nên ở đó, nhưng không có nó, nó sẽ trả về lần gần đây nhất, nhưng không phải với giá trị IO tương đối của nó.
Có ý kiến gì không? Cảm ơn!