sql запрос для вывода информации из двух таблиц

Только начал изучать, прошу понять и простить. Уже всю голову сломал.

Нужно вывести money, certificates из users и id из user_sessions для пользователей, у которых дата обновления сессии(updated_at) была раньше 25 мая 2021.

Две таблицы, users: users

user_sessions:

user_sessions

Идея была найти максимальное значение в колонке updated_at для каждого пользователя и сравнить его с '20210525', но этот максимум я так и не смог получить.


Ответы (1 шт):

Автор решения: S.H.

Попробуйте так:

    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 мы исключим строки из вывода первоначального запроса

→ Ссылка