次のようなユーザーのチェックイン時間とチェックアウト時間の表 (「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
これは近いですが、完璧ではありません。最後の group by があってはならないことはわかっていますが、それがないと、最新の時刻が返されますが、相対 IO 値は返されません。
何か案は?ありがとう!