@MichailNikiforov

Как выбрать записи с максимальными элементами SQL?

Есть в базе 2 таблицы - users с полями id и name
и User_log с полями user_id и login_time.

Нужен запрос, который даст выборку с полями user_name, last_login (это login_time последней авторизации пользователя). Если в USER_LOGINS нет информации об авторизациях пользователя, значение должно быть пустым.

Мой вариант выдает одну запись, просто с самым последним login_time, а не у каждого пользователя.
SELECT users.id, MAX(User_log.login_time) AS user_name, last_login FROM users, user_log WHERE users.id = user_log.user_id
Помогите, пожалуйста!

UPD сделал!
Вот верный ответ:
SELECT users.Name AS user_name, user_logins.Login_time AS last_login
FROM users
LEFT OUTER JOIN
user_logins
ON users.ID = user_logins.User_id
WHERE
user_logins.Login_time IN
(SELECT MAX(Login_time) FROM user_logins WHERE users.ID = user_logins.User_id) OR user_logins.Login_time IS NULL;

Помогло это
  • Вопрос задан
  • 3623 просмотра
Пригласить эксперта
Ответы на вопрос 1
wscms
@wscms
SELECT u.*, max(ul.login_time) as login_time FROM users u
LEFT OUTER JOIN user_log ul ON u.id = ul.user_id
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы