для простоты, вот как выглядит база данных:
state | name1 | name2 | timestamp
2 | user1 | set1 | 2020-05-27 16:20:00
6 | user1 | set1 | 2020-05-27 16:19:00
8 | user2 | set1 | 2020-05-27 16:10:00
2 | user2 | set1 | 2020-05-27 16:00:00
2 | user3 | set1 | 2020-05-27 16:30:00
2 | user4 | set2 | 2020-05-27 16:35:00
Объяснение:
Если состояние равно 2, пользователь вошел в систему в наборе, указанном в "name2" в заданную "timestamp".
Если состояние равно 6 или 8, пользователь вышел из системы. Теперь возможно, что пользователь входил и выходил несколько раз в день. Но мне нужно выяснить, какой пользователь сейчас вошел в систему.
ОБНОВЛЕНИЕ: на одном наборе одновременно может быть более одного пользователя. Я обновил таблицу.
Чтобы прояснить, в этом примере мне нужен следующий результат:
state | name1 | name2 | timestamp
2 | user1 | set1 | 2020-05-27 16:20:00
2 | user3 | set1 | 2020-05-27 16:30:00
Есть какие-нибудь подсказки, как я могу его получить? Я уже два дня работаю над этим топом c ... спросил гугл, пришел сюда, но это мне не очень помогает.
Это не работает для меня, потому что я получаю всех пользователей, не не имеет значения, вошли они в систему или вышли из нее последним ...
select state,
name1,
name2,
timestamp
from db1
where name2 = 'set1' AND timestamp >= current_date
order by timestamp desc,state,name1 limit 5;
С уважением, JP