Ho una tabella con l'accesso di utenti strutturata così
id |
id_utente |
data_ora_accesso |
pagina_visitata |
1 |
1 |
2014-11-07 10:24:09.000000 |
p1 |
2 |
1 |
2014-11-08 10:24:09.000000 |
p1 |
3 |
1 |
2014-11-09 10:24:09.000000 |
p2 |
4 |
2 |
2014-11-18 10:24:09.000000 |
p2 |
5 |
2 |
2014-11-19 10:24:09.000000 |
p1 |
6 |
3 |
2014-11-28 10:24:09.000000 |
p1 |
7 |
3 |
2014-11-29 10:24:09.000000 |
p1 |
ogni istanza quindi rappresenta il singolo accesso di ogni singolo utente in una data ora ad una data pagina. Sto cercando (invano) di estrarre solo gli id_utente dei soli utenti che hanno fatto come loro ultimo personale accesso alla pagina "p1"...quindi praticamente il risultato dovrebbe essere questo:
id |
id_utente |
data_ora_accesso |
pagina_visitata |
1 |
1 |
2014-11-07 10:24:09.000000 |
p1 |
2 |
1 |
2014-11-08 10:24:09.000000 |
p1 |
3 |
1 |
2014-11-09 10:24:09.000000 |
p2 |
4 |
2 |
2014-11-18 10:24:09.000000 |
p2 |
5 |
2 |
2014-11-19 10:24:09.000000 |
p1 |
6 |
3 |
2014-11-28 10:24:09.000000 |
p1 |
7 |
3 |
2014-11-29 10:24:09.000000 |
p1 |
|
Ho provato con una query nidificata così:
Codice PHP:
SELECT id_utente
FROM (
SELECT id_utente, MAX(data_ora_access), pagina_visitata
FROM tbl
GROUP BY id_utente
ORDER BY MAX(data_ora_access) DESC
) AS _b
WHERE pagina_visitata='p1'
Ma non funziona qualcosa sulla query nidificata, il problema sta nella selezione della sola ultima istanza (in termini del valore data_ora_accesso) per ogni singolo utente.
La query nidificata praticamente dovrebbe estrarre solo l'ultima istanza che, tra tutte le visite che ogni singolo utente ha fatto, rappresenta l'ultima visita, poi scremo questo risultato con la WHERE della query principale, ma c'è qualcosa che non riporta...
Qualcuno ha un'idea migliore?