У нас есть временные метки для разных вещей по всему сайту. Я ищу способ получить пользователей, которые являются «онлайн» или активны за последние 20 минут. Im также пытается сортировать их по пересечению последней временной метки в нескольких столбцах в нескольких таблицах.SQL-запрос, чтобы найти последнюю информацию о пользователях по таблицам
SELECT user.userID, user.username, GREATEST(
(SELECT MAX(notifications.noteTime) FROM notifications WHERE notifications.creatorID = user.userID),
challengesRead.lastRead,
notificationsRead.lastRead) AS realtime
FROM user
LEFT JOIN challengesRead ON challengesRead.userID = user.userID
LEFT JOIN notificationsRead ON notificationsRead.userID = user.userID
LEFT JOIN notifications ON notifications.creatorID = user.userID
LEFT JOIN challenges ON challenges.userID = user.userID
WHERE timestampdiff(minute, realtime, now()) < 20
GROUP BY user.userID
ORDER BY realtime DESC
Мои вопросы.
1) Timestampdiff, похоже, не распознает в реальном времени? Однако пересчет GREATEST() в timestampdiff действительно работает, но кажется повторяющимся.
2) Yikes, этот зверь берет навсегда бежать, что лучший способ оптимизировать?
3) Что является лучшим способом сделать это?
Doh! Делает смысл и решает все вышеупомянутые проблемы. Благодарю. –