Dati di ordinazione delle query MySQL in due modi
-
08-07-2019 - |
Domanda
Sto monitorando le visualizzazioni di pagina all'interno dei moduli utilizzando la seguente tabella:
id | page_id | user_id | session_id | created
Ogni pagina è unica per un determinato modulo; quindi la pagina 14 esiste solo nel modulo 2, per esempio.
Sto provando a scrivere una query che mi dice quando è iniziata una sessione di visualizzazione (GROUP BY session_id) per un modulo particolare, ma sto riscontrando problemi con il mio ordine. Fondamentalmente, per quella sessione raggruppata, voglio restituire il primo "creato" (l'ora di inizio della sessione di visualizzazione) e l'ultimo page_id (fino a che punto sono arrivati ??all'interno del modulo).
Qual è il modo migliore per raggiungere questo obiettivo?
Soluzione
Penso che dovrai utilizzare le sottoquery nella selezione:
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
Altri suggerimenti
SELECT MIN(created), MAX(page_id)
FROM modules
GROUP BY
session_id