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ì:
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.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'
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?