Originariamente inviato da Trotttola
Buonasera.

Sono un neofita nel campo dei database quindi errori sono all'ordine del giorno.

Per il mio piccolo sito sto realizzando una pagina la quale ha il "compito" di controllore da quanto tempo è inattivo un utente.

So che si possono usare le sessioni ma ho la necessità di effettuare questo controllo a mezzo di una query sul mio db.

Ho due tabelle le quali sono strutturate così ( riporto anche dati di esempio )

1a tabella ( utenti )

Id - Utente - Collegato
1 - Luca - 1
2 - Stefano - 1
3 - Andrea - 0

2a tabella ( eventi )

Id - Utente - Evento - DataOra
1 - Luca - Ingresso - 2012-04-01 18:54:22
2 - Luca - Carica pag - 2012-04-01 18:55:22
3 - Stefano - Carica pag - 2012-04-01 18:55:23
4 - Luca - Modifica dati - 2012-04-01 18:57:22
5 - Luca - Uscita - 2012-04-01 18:59:22
6 - Stefano - Uscita - 2012-04-01 18:59:47

Il problema è questo:

Ho la necessità di estrarre il campo Utente e DataOra solo se l'utente ha il valore collegato = 1.

Come posso fare?
Ho provato così ma mi estrae sempre e solo il primo utente presente nella tabella Utenti anche quando il campo Collegato è a 0

La query che ho provato:

SELECT eventi.utente, dataora FROM eventi JOIN utenti WHERE collegato = '1' ORDER BY dataora ASC LIMIT 1

Vi ringrazio sin da ora per l'aiuto.
Saluti.
codice:
SELECT eventi.utente, dataora FROM eventi JOIN utenti
ON eventi.utente = utente.id
 WHERE utente.collegato = '1'
Quella che ti ho scritto estrae tutti gli eventi legati ad un utente collegato, se, invece vuoi estrarre solo l'ultimo evento di un utente collegato la soluzione è differente:

codice:
SELECT eventi.utente, dataora FROM eventi JOIN utenti
ON eventi.utente = utente.id
 WHERE utente.collegato = '1' and eventi.dataora = 
    (select MAX(e2.dataora)
    FROM eventi e2
    where e2.utente = eventi.utente)
Prova e dimmi se va bene