Avendo un Db di Ip come...

...posso selezionare l'ip solo una volta, evitando di contare tutte le altre pagine che ha visitato, mettendo un limite temporale di un ora (cioè quando scade se si ripresenta lo stesso ip lo riconta fino all'ora successiva e così via...)?

 

inviato 10 anni fa
dantefoxfox
X 0 X

Puoi spiegarti meglio?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Puoi spiegarti meglio?

il database è formato così:

[table][tr][td]

pagina --- ip --- date --- time --- referrer

[/table]

dove mi mostra le statistiche del sito, siccome può succedere che un navigatore guardi più di una pagina, ogni riga non corrisponde ad un navigatore unico, ed io dovrei calcolare questo, ipotizzando una fascia oraria di un ora o due (passato quel periodo chi si riprensenterà con quel ip, sarà calcolato come visitatore unico).

Come posso fare?

risposto 10 anni fa
dantefoxfox
X 0 X

quindi potresti fare una SELECT con la clausola DISTINCT per prendere i record una volta sola, con la condizione WHERE sull'orario.

SELECT DISTINCT ip FROM nome_tabella WHERE ...

Questo andrebbe bene se vuoi solo l'IP.

Se invece vuoi prendere più campi devi usare una GROUP BY

SELECT ip, referrer, MIN(time) FROM nome_tabella WHERE ... GROUP BY ip

Il WHERE va usato sempre per inserire la condizione sull'orario, il GROUP BY raggruppa tutti i risultati con lo stesso ip in un unica riga, verrà scelta la riga con il campo time più piccolo (MIN)

Per la condizione sull'orario c'è un problema: hai data e ora in 2 campi distinti e questo complica le cose, ti conviene usare un solo campo di tipo "date time" o "timestamp"

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda