Как взять результат одного запроса и использовать этот список в качестве ключа для другого запроса ко второй таблице? - PullRequest
0 голосов
/ 12 апреля 2020

Мой первый запрос вернет список пользователей и время их последнего входа в систему:

username   |       last_login
john            2020-04-12 00:01:23 
amy             2020-04-10 12:13:42
brad            2020-04-11 11:21:00
max             2020-04-09 03:33:00

Затем я хотел бы найти другую таблицу, в которой есть запись всех входов в систему и их продолжительности, и вернуть самый длинный вход в систему. время для каждого пользователя.

username    |    login_time          |      logout_time       |    duration
john          2020-04-12 00:01:23        2020-04-12 00:10:23          9
amy           2020-04-10 12:13:42        2020-04-10 12:43:42          30
brad          2020-04-11 11:21:00        2020-04-11 12:21:00          60
john          2020-04-10 08:21:00        2020-04-10 08:45:00          24
amy           2020-04-10 07:00:42        2020-04-10 07:03:42          3
max           2020-04-09 03:33:00        2020-04-09 03:40:00          7

Запрос 1:

select username, last_login from t1;

Запрос 2 для получения самой длинной полосы для указанного пользователя c:

select duration from t2 where username='john' and duration=(select max(duration) from t2 where username='john')

В результате я хотел бы получить каждого пользователя, его последний вход в систему и самое продолжительное время входа в систему:

username    |        last_login         |    longest_login
john             2020-04-12 00:01:23                24
amy              2020-04-10 12:13:42                30
brad             2020-04-11 11:21:00                60
max              2020-04-09 03:33:00                7

Я не совсем уверен, как выполнить второй запрос, используя каждое имя пользователя, найденное в запросе 1, а затем объединить результат.

1 Ответ

1 голос
/ 12 апреля 2020

Можно join и агрегация:

select q1.username, q1.lastlogin, max(t.duration)
from firstquery q1 join
     othertable t
     on t.username = q1.username
group by q1.username, q1.lastlogin;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...