MySQL запрос данных данных двумя способами
-
08-07-2019 - |
Вопрос
Я отслеживаю просмотры страниц в модулях, используя следующую таблицу:
id | page_id | user_id | session_id | created
Каждая страница уникальна для определенного модуля; например, страница 14 существует только в модуле 2.
Я пытаюсь написать запрос, который сообщает мне, когда начался сеанс просмотра (GROUP BY session_id) для определенного модуля, но у меня возникают проблемы с моим заказом. По сути, для этого сгруппированного сеанса я хочу вернуть самое раннее «созданное» (время начала сеанса просмотра) и самое последнее page_id (как далеко они попали в модуль).
Как лучше всего это сделать?
Решение
Я думаю, вам нужно будет использовать подзапросы в select:
SELECT a.session_id, MIN(a.created) as start_time,
b.page_id AS last_page, b.end_time
FROM table a
INNER JOIN
(SELECT b.session_id, MAX(b.created) as end_time, MAX(b.page_id)
FROM table b GROUP BY b.session_id)
ON a.session_id = b.session_id GROUP BY a.session_id
Другие советы
SELECT MIN(created), MAX(page_id)
FROM modules
GROUP BY
session_id
Не связан с StackOverflow