Сделать выборку времени последнего логина в системе всех пользователей - MySQL
Формулировка задачи:
Добрый день!
В sql не силен, возник вопрос.
Есть 2 таблицы:
USERS
+-+--------+
| id | name |
+--+--------+
| 0 | Azat |
| 1 | Anton |
| 2 | Ivan |
| 3 | Marat |
+--+--------+
LOGIN_TIME
+---+----------+-------------+
| id | user_id |login_time |
+---+----------+--------------+
| 0 | 0 | 15.01.2017 |
| 1 | 0 | 01.01.2017 |
| 2 | 2 | 12.01.2017 |
| 3 | 0 | 15.11.2016 |
| 4 | 2 | 23.08.2016 |
+--+---------+-------------+
id в обеих таблицах является первичным ключом, USERS.id и LOGIN_TIME.user_id связаны друг с другом
нужно выбрать имена и их самое последнее время захода в систему
Решение задачи: «Сделать выборку времени последнего логина в системе всех пользователей»
textual
Листинг программы
SELECT u.name, t.login_time FROM ( SELECT MAX(login_time) AS login_time, user_id FROM login_time GROUP BY user_id ) AS t INNER JOIN users u ON t.user_id = u.id
Объяснение кода листинга программы
В данном коде выполняется запрос к базе данных с целью получить имя пользователя и время его последнего входа в систему.
- Создается подзапрос (query), который выбирает максимальное время входа в систему для каждого пользователя (GROUP BY user_id). Это делается для того, чтобы избежать повторений в итоговой выборке.
- Результаты подзапроса сохраняются в временную таблицу с именем
t
. - Затем происходит объединение (INNER JOIN) временной таблицы
t
с таблицейusers
по полюid
, чтобы получить имена пользователей. - В итоговой выборке выводятся поля
name
иlogin_time
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д