다음과 같은 사용자의 체크인 및 체크 아웃 시간 테이블 ( "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 당 가장 최근 레코드 만 출력하는이 테이블의보기를 만들려고합니다.
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 값은 반환하지 않습니다.
어떤 아이디어? 감사!