Ok scusa, pensavo non si potesse annidare una query dentro la Join, comunque così ottengo prestazioni peggiori addirittura, mentre sto scrivendo ancora non porta a termine la query...forse perché crea al volo un'estratto completo di sessioni, ma alla fine dei giochi sempre lo stesso numero di controlli fa no?!
SELECT COUNT(*) as visite FROM accessi INNER JOIN sessioni ON accessi.sessione_id=sessioni.id AND sessioni.user_id='6'
se provi a usare una tabella temp ? tipo
insert into TEMP SELECT sessioni.id from sessioni where sessioni.user_id='6'
SELECT COUNT(*) as visite FROM accessi LEFT JOIN TEMP ON accessi.sessione_id=TEMP.id
e poi, sei sicuro che vada bene la LEFT JOIN? non dovresti usare una INNER?
Giusto per provare di tutto se non ti dispiace, sono il primo non convinto, quasi sicuramente è peggio tutte le soluzioni precedenti andavano meglio a prima vista però...
SELECT COUNT(TAB.Visita) as visite
FROM
( SELECT 1 AS Visita
FROM accessi
INNER JOIN sessioni ON accessi.sessione_id=sessioni.id
WHERE sessioni.user_id='6'
) TAB
Poi per completare il cerchio resterebbe solo la JOIN in WHERE ma anche qui non ci scommetterei un Euro migliori qualcosa:
SELECT COUNT(*) AS Visite
FROM accessi, sessioni
WHERE accessi.sessione_id=sessioni.id
AND sessioni.user_id='6'
Se ti stai approcciando all'argomento database dai uno sguardo anche a: SQL, database relazionale, regole di Codd, modello E-R, forme normali, normalizzazione con il mio testo: Semplicemente Database
SELECT COUNT(accessi.sessione_id) as visite FROM accessi INNER JOIN sessioni ON accessi.sessione_id=sessioni.id AND sessioni.user_id='6'