Мой запрос должен сделать это
- получить данные пользователя
- получить последний вход в систему из таблицы входов в систему
- получить количество неудачных входов в систему, но только из последних 3 входов этого пользователя
Кажется, моя проблема в подзапросе. Я хочу, чтобы часть WHERE
ссылалась на user_id, который был сопоставлен ранее во внешнем запросе. Это вообще возможно? Я сделал большой беспорядок этого запроса?
$query = 'SELECT users.id,
users.email,
users.password,
users.first_name,
users.last_name,
max(user_logins.datetime) as last_login,
count(user_logins.failed) as failed_logins,
FROM users, user_logins
WHERE users.email = ' . Database::instance()->escape($email) . '
AND users.id = user_logins.user_id
AND user_logins.datetime IN (SELECT datetime FROM user_logins WHERE user_id = users.id )
LIMIT 1';
Кажется, что last_login
работает отлично. Причина, по которой я хочу получить последние 3, состоит в том, чтобы я мог проверить, не сработали ли последние 3, а затем установить тайм-аут для этого пользователя.
Я не могу вернуться и сделать UPDATE users SET failed = 1 WHERE failed = 0
, потому что тогда у меня не будет точного журнала пользовательских логинов. Я хотел бы увидеть все, что не удалось.
Что я делаю не так?
Спасибо