Kullanıcıların giriş ve çıkış sürelerinin aşağıdaki gibi görünen bir tablosu ("lms_attendance") var:
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
Bana "giriş" veya "çıkış" değerini verirken, kullanıcı kimliği başına yalnızca en son kaydı çıkaracak bu tablonun bir görünümünü oluşturmaya çalışıyorum, yani:
id user time io
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in
Şimdiye kadar oldukça yakınım, ancak görünümlerin alt sorguları kabul etmeyeceğini fark ettim, bu da işi çok daha zor hale getiriyor. Aldığım en yakın sorgu şuydu:
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`
Ama aldığım şey:
id user time io
3 6 1370932128 out
1 9 1370931664 out
5 12 1370933037 in
4 12 1370932128 out
Hangisi yakın ama mükemmel değil. Son grubun orada olmaması gerektiğini biliyorum, ancak onsuz, en son zamanı döndürüyor, ancak göreli IO değeriyle değil.
Herhangi bir fikir? Teşekkürler!