sql запрос для вывода информации из двух таблиц
Только начал изучать, прошу понять и простить. Уже всю голову сломал.
Нужно вывести money, certificates из users и id из user_sessions для пользователей, у которых дата обновления сессии(updated_at) была раньше 25 мая 2021.
user_sessions:
Идея была найти максимальное значение в колонке updated_at для каждого пользователя и сравнить его с '20210525', но этот максимум я так и не смог получить.
Ответы (1 шт):
Попробуйте так:
SELECT users.money, users.certificates, user_sessions.id FROM users, user_sessions
WHERE users.id=user_sessions.user_id AND user_sessions.updated_at<'2021-05-25'
(я писал из головы, ничго не проверяя, вполне возможно, по условиям задачи надо будет в запросе еще что то подкрутить).
На самом деле, это прямой перевод фразы "вывести money, certificates из users и id из user_sessions для пользователей, у которых дата обновления сессии(updated_at) была раньше 25 мая 2021" на SQL'ный
PS. После уточнения условия в комментариях предлагаю такой вариант:
SELECT users.money, users.certificates, user_sessions.id FROM users, user_sessions
WHERE users.id=user_sessions.user_id AND user_sessions.updated_at<'2021-05-25' AND
user_sessions.user_id NOT IN (SELECT DISTINCT user_sessions.user_id FROM user_sessions WHERE user_sessions.updated_at>='2021-05-25')
ТО есть, я добавил подзапрос SELECT DISTINCT user_sessions.user_id FROM user_sessions WHERE user_sessions.updated_at>='2021-05-25' Этот запрос должен найти id шники всех пользователй, котрые логинились в систему позже даты, и по этим Id мы исключим строки из вывода первоначального запроса

