Я делаю запрос SQL, в котором я хочу получить некоторые результаты для каждой последней записи пользователя, для этого я сделал этот запрос.
SELECT lA.attendance_id, lA.time_in, lA.time_out, lS.title, lS.end_time, lU.uid
FROM logi_attendance AS lA
INNER JOIN
logi_users AS lU ON lA.user_id = lU.user_id
INNER JOIN
logi_shifts AS lS ON lU.shift_id = lS.shift_id
WHERE
(lA.time_in IS NOT NULL) AND
(lA.time_out IS NULL) AND
(lA.attendance_id =
(
SELECT TOP (1) A.attendance_id
FROM logi_attendance AS A
INNER JOIN
logi_users AS B ON A.user_id = B.user_id
ORDER BY A.attendance_id DESC
)
)
Как вы видите, я использовал подзапрос для получения последних записей каждого пользователя (новые записи создаются ежедневно), поэтому получение последней записи является обязательным требованием. Теперь посмотрим, что я использовал TOP (1) в подзапросе, который ограничивает его возвращением только 1 записи. Это позволяет основному запросу успешно выполняться, но это бесполезно, потому что он возвращает запись только одного пользователя, которого он находит первым. Но я хочу получить результаты всех пользователей, но это должно быть сделано так, чтобы подзапрос возвращал каждый последний идентификатор один за другим, чтобы основной запрос выполнялся успешно. Прямо сейчас, если я удаляю TOP (1), то выдает ошибку, что подзапрос возвращает более 1 значения, что неверно.
Не знаю, правильно ли я объяснил, дайте мне знать, если вы не понимаете, о чем я пытаюсь спросить, и я постараюсь объяснить лучше.
Спасибо.