I want to get second max login date from user_log table and returning login date to null
when user_id
records are not in user_log
table and only single login date on user_log
table.
for the example case.
user_log CASE 1
╔═════════╦═══════════╦═══════╦══════════════════════╗
║ ID ║ USER_ID ║ TYPE ║ UPDATED_AT ║
╠═════════╬═══════════╬═══════╬══════════════════════╣
║ 1 ║ 1 ║ Login ║ 2019-06-19 15:00:00 ║
║ 2 ║ 2 ║ Login ║ 2019-06-19 15:02:00 ║last login user_id 2
║ 3 ║ 1 ║ Logout║ 2019-06-19 15:03:00 ║
║ 5 ║ 1 ║ Login ║ 2019-06-19 15:04:00 ║last login user_id 1
║ 6 ║ 2 ║ Logout║ 2019-06-19 15:05:00 ║
║ 7 ║ 3 ║ Login ║ 2019-06-19 15:06:00 ║last login user_id 3
║ 8 ║ 2 ║ Login ║ 2019-06-19 15:07:00 ║
║ 9 ║ 1 ║ Logout║ 2019-06-19 15:08:00 ║
║ 10 ║ 1 ║ Login ║ 2019-06-19 15:10:00 ║
║ 11 ║ 3 ║ Logout║ 2019-06-19 15:15:00 ║
║ 12 ║ 3 ║ Login ║ 2019-06-19 15:18:00 ║
╚═════════╩═══════════╩═══════╩══════════════════════╝
user_log CASE 2
╔═════════╦═══════════╦═══════╦══════════════════════╗
║ ID ║ USER_ID ║ TYPE ║ UPDATED_AT ║
╠═════════╬═══════════╬═══════╬══════════════════════╣
║ 1 ║ 1 ║ Login ║ 2019-06-19 15:00:00 ║last login user_id 1
║ 2 ║ 1 ║ Logout║ 2019-06-19 15:03:00 ║
║ 3 ║ 1 ║ Login ║ 2019-06-19 15:04:00 ║
║ 4 ║ 2 ║ Login ║ 2019-06-19 15:05:00 ║
║ 5 ║ 3 ║ Login ║ 2019-06-19 15:07:00 ║
╚═════════╩═══════════╩═══════╩══════════════════════╝
user_log CASE 3
╔═════════╦═══════════╦═══════╦══════════════════════╗
║ ID ║ USER_ID ║ TYPE ║ UPDATED_AT ║
╠═════════╬═══════════╬═══════╬══════════════════════╣
║ 1 ║ 1 ║ Login ║ 2019-06-19 15:00:00 ║
║ 2 ║ 2 ║ Login ║ 2019-06-19 15:05:00 ║
╚═════════╩═══════════╩═══════╩══════════════════════╝
table users
╔═════════╦════════════╗
║ ID ║ USERNAME ║
╠═════════╬════════════╣
║ 1 ║ XX ║
║ 2 ║ YY ║
║ 3 ║ ZZ ║
╚═════════╩════════════╝
This is my query.
SELECT u.id as iduser,u.username,ul.type,MAX(ul.updated_at) last_login_date
FROM users u
LEFT JOIN user_log ul ON u.id=ul.user_id
where ul.type = 'Login'
GROUP BY u.id
this query is just showing the max login date and only when user_id
record in user_log
table
Expected Result case 1
╔═══════════╦═══════════╦═══════╦══════════════════════╗
║ USER_ID ║ USERNAME ║ TYPE ║ LAST_LOGIN_DATE ║
╠═══════════╬═══════════╬═══════╬══════════════════════╣
║ 1 ║ XX ║ Login ║ 2019-06-19 15:04:00 ║LOG_ID(5)
║ 2 ║ YY ║ Login ║ 2019-06-19 15:02:00 ║LOG_ID(2)
║ 3 ║ ZZ ║ Login ║ 2019-06-19 15:06:00 ║LOG_ID(7)
╚═══════════╩═══════════╩═══════╩══════════════════════╝
Expected Result case 2
╔═══════════╦═══════════╦═══════╦══════════════════════╗
║ IDUSER ║ USERNAME ║ TYPE ║ LAST_LOGIN_DATE ║
╠═══════════╬═══════════╬═══════╬══════════════════════╣
║ 1 ║ XX ║ Login ║ 2019-06-19 15:00:00 ║LOG_ID(1)
║ 2 ║ YY ║ - ║ - ║LOG_ID(-)
║ 3 ║ ZZ ║ - ║ - ║LOG_ID(-)
╚═══════════╩═══════════╩═══════╩══════════════════════╝
Expected Result case 3
╔═══════════╦═══════════╦═══════╦══════════════════════╗
║ USER_ID ║ USERNAME ║ TYPE ║ LAST_LOGIN_DATE ║
╠═══════════╬═══════════╬═══════╬══════════════════════╣
║ 1 ║ XX ║ - ║ - ║LOG_ID(-)
║ 2 ║ YY ║ - ║ - ║LOG_ID(-)
║ 3 ║ ZZ ║ - ║ - ║LOG_ID(-)
╚═══════════╩═══════════╩═══════╩══════════════════════╝
all case should be one query.