Pergunta

Estou rastreamento de páginas vistas dentro dos módulos usando a tabela a seguir:

id | page_id | user_id | session_id | created

Cada página é exclusivo para um determinado módulo; assim página 14 só existe no módulo 2, por exemplo.

Eu estou tentando escrever uma consulta que me diz quando uma sessão de visualização começou (GROUP BY session_id) para um módulo particular, mas eu estou tendo problemas com minha ordenação. Basicamente, para essa sessão agrupados, eu quero voltar o mais cedo 'criado' (a hora de início da sessão de visualização) e as últimas page_id (o quão longe eles tem dentro do módulo).

Qual é a melhor maneira de conseguir isso?

Foi útil?

Solução

Eu acho que você vai precisar de utilizar sub-consultas no 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

Outras dicas

SELECT  MIN(created), MAX(page_id)
FROM    modules
GROUP BY
        session_id
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top