Mam tabelę („lms_attendance”) z czasami zameldowania i wymeldowania użytkowników, która wygląda następująco:
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
Próbuję utworzyć widok tej tabeli, który wyprowadziłby tylko najnowszy rekord na identyfikator użytkownika, jednocześnie dając mi wartość „in” lub „out”, więc coś takiego:
id user time io
2 9 1370931664 out
3 6 1370932128 out
5 12 1370933037 in
Jestem dość blisko, ale zdałem sobie sprawę, że widoki nie akceptują podzapytań, co znacznie utrudnia sprawę. Najbliższe zapytanie, które otrzymałem, brzmiało:
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`
Ale otrzymuję:
id user time io
3 6 1370932128 out
1 9 1370931664 out
5 12 1370933037 in
4 12 1370932128 out
Co jest bliskie, ale nie idealne. Wiem, że ta ostatnia grupa według nie powinna tam być, ale bez niej zwraca ostatni czas, ale nie ze swoją względną wartością we / wy.
Jakieś pomysły? Dzięki!