View Full Version : [query mysql] count
gaglioppo
21-03-2004, 10:35
ciao amici
ecco il problema:
avendo la tabella:
ip| data | ora | pagina
devo contare gli accessi Totali.
esempio:
ip| data | ora | pagina
1 oggi 13:00 indice.htm
1 oggi 13:01 pag2.htm
1 oggi 14:00 pag3.htm
2 ieri 18:00 indice.htm
2 oggi 16:00 indice.htm
3 oggi 16:00 indice.htm
3 ieri 12:00 indice.htm
mi dovrebbe restituire: 5 accessi.
io ho provato con:
select count(ip)
from accessi
group by ip,data
mi restituisce 5 righe:
3
1
1
1
1
sto impazzendo
Prova così ;)
select count(ip)
from accessi
group by data;
gaglioppo
21-03-2004, 22:50
niente!!!
non funge
The March
22-03-2004, 12:01
Originariamente inviato da gaglioppo
ciao amici
ecco il problema:
avendo la tabella:
ip| data | ora | pagina
devo contare gli accessi Totali.
esempio:
ip| data | ora | pagina
1 oggi 13:00 indice.htm
1 oggi 13:01 pag2.htm
1 oggi 14:00 pag3.htm
2 ieri 18:00 indice.htm
2 oggi 16:00 indice.htm
3 oggi 16:00 indice.htm
3 ieri 12:00 indice.htm
mi dovrebbe restituire: 5 accessi.
io ho provato con:
select count(ip)
from accessi
group by ip,data
mi restituisce 5 righe:
3
1
1
1
1
sto impazzendo
non ho capito molto bene cosa chiedi...
se vuoi che restituisca 5 accessi questa dovrebbe funzionare:
select count(*)
from accessi
where pagina = 'indice.htm'
se no spiegati meglio;)
Forse così:
select count(
select ip
from accessi
group by data
)
from accessi;
anke se nn so se la sintassi sia molto giusta
select count(
select ip
from accessi
group by data
)
from accessi;
Che è identica a:
select count(ip)
from accessi
group by data;
;)
gaglioppo
22-03-2004, 15:35
Originariamente inviato da The March
non ho capito molto bene cosa chiedi...
se vuoi che restituisca 5 accessi questa dovrebbe funzionare:
select count(*)
from accessi
where pagina = 'indice.htm'
se no spiegati meglio;)
Si tratta di un contatore di accesso particolareggiato che indica quali pagine del sito sono state visitate dall'utente.
Non necessariamente un utente potrebbe partire da index.htm, per questo non posso usare where pagina = 'indice.htm'.
La query:
select count(ip)
from accessi
group by data;
non mi restituisce un numero, bensi' piu' righe in cui ci sono il numero di accessi raggruppato per data, mentalmente:
24 luglio = 5 accessi
26 luglio = 3 accessi
e cosi via.
Secondo le mie conoscenze invece avrebbe dovuto darmi il numero totale, o sbaglio?
Il fatto poi che con mysql non si possa innestare non è che mi aiuta a risolvere i problemi... :-(
Originariamente inviato da gaglioppo
non mi restituisce un numero, bensi' piu' righe in cui ci sono il numero di accessi raggruppato per data, mentalmente:
24 luglio = 5 accessi
26 luglio = 3 accessi
e cosi via.
Secondo le mie conoscenze invece avrebbe dovuto darmi il numero totale, o sbaglio?
Non era questo che richiedevi ?!?!?!? Spiegati meglio...
The March
22-03-2004, 17:25
Originariamente inviato da cionci
Non era questo che richiedevi ?!?!?!? Spiegati meglio...
Lui vuole che gli restituisca quali pagine l'utente ha visitato?
a me sembra di a ver capito così... ma sinceramente dopo 8 ore e 17 minuti davanti al pc non ci capisco più di tanto..
comunque basta fare
select disctinct pagina, ip
from accessi
where ip='192.168.250.67' se vuoi il dettaglio di un utente in particolare
order by ip
se è questo che volevi ok... se no... cerca di spiegarti un pochino meglio!
;)
p.s.
con questo dovresti otenere:
ip pagina
1 ciao.htm
1 home.htm
3 aloa.htm
4 ...eccc
se metti il where lo fai solo per un ip...
gaglioppo
22-03-2004, 18:53
voglio che la query mi restituisca il numero complessivo di accessi.
esempio:
98 accessi (fatti da 45 ip diversi in 56 giorni diversi)
:muro:
gaglioppo
22-03-2004, 18:54
Originariamente inviato da gaglioppo
devo contare gli accessi Totali.
Select count(*) from accessi;
Così ?
gaglioppo
22-03-2004, 23:13
Originariamente inviato da cionci
Select count(*) from accessi;
Così ?
no.
esempio di tabella:
ip nome_pagina data
----------------------------------------
ip1 pagina1.htm 24 luglio
ip1 pagina2.htm 24 luglio
ip1 pagina3.htm 24 luglio
ip1 pagina4.htm 24 luglio
ip2 pagina1.htm 24 luglio
ip2 pagina1.htm 25 luglio
ip2 pagina2.htm 25 luglio
ip3 pagina4.htm 25 luglio
ip4 pagina1.htm 24 luglio
ip4 pagina2.htm 24 luglio
spiegazione:
L'utente con ip1 ha visto 4 pagine il 24 luglio = 1 accesso
L'utente con ip2 ha visto 1 pagina il 24 luglio = 1 accesso
L'utente con ip2 ha visto 2 pagine il 25 luglio = 1 accesso
L'utente con ip3 ha visto 1 pagina il 25 luglio = 1 accesso
L'utente con ip4 ha visto 2 pagine il 24 luglio = 1 accesso
Io voglio una query che mi restituisca 5.
Spero di essere stato chiaro stavolta.
:muro:
a presto
Ora ho capito ;)
SELECT Count(*)
FROM accessi
GROUP BY ip, data;
gaglioppo
23-03-2004, 14:33
pure io ero convinto che fosse giusto, ma non lo è
ecco il risultato della tua query
Count( * )
2
8
8
5
1
1
1
1
1
invece avrebbe dovuto restituire 9
Per ora ho risolto con una variabile messa in un while che mi conta le 9 righe ma non è che sia bellissimo a vedersi.
:-(
ecco la tabella per esteso mysql:
ip varchar(20)
data date
ora time
host varchar(60)
pagina varchar(80)
The March
23-03-2004, 15:21
Originariamente inviato da gaglioppo
pure io ero convinto che fosse giusto, ma non lo è
ecco il risultato della tua query
Count( * )
2
8
8
5
1
1
1
1
1
invece avrebbe dovuto restituire 9
Per ora ho risolto con una variabile messa in un while che mi conta le 9 righe ma non è che sia bellissimo a vedersi.
:-(
ecco la tabella per esteso mysql:
ip varchar(20)
data date
ora time
host varchar(60)
pagina varchar(80)
prova questa
select count (ip)
from accessi
where data in (select distinct data from accessi)
poi facci sapere!
MySql non supporta le subquery...
The March
23-03-2004, 17:12
Originariamente inviato da cionci
MySql non supporta le subquery...
..
be non so che dire...
io uso "microsoft sql server" e pare funzioni così...
(microsoft sql server... è quello il suo vero nome?)
Avevo capito ancora male...
Vediamo un po'...ora ho capito... La mia query ritorna i numeri singoli... Tu vuoi sapere il conteggio dei dati ritornati dalla mia query...
Non è facile...mi sa che mi appoggerò a qualche variabile ;)
Ora ci penso...
Originariamente inviato da The March
(microsoft sql server... è quello il suo vero nome?)
Sì...
Era + semplice del previsto:
SELECT count(distinct ip, data) As AccessiDistinti
FROM accessi;
Comunque io lo farei in due tabelle...visto che così hai informazioni ridondanti...
Accessi
IDAccesso, Ip, Data
PagineVisitate
IDAccesso, Pagina
Certo con una tabella fai una sola insert...se ogni ip ogni giorno visitasse solamente una pagina faresti il doppio delle insert...
Questa organizzazione ti permetterebbe di raccogliere altri dati statistici, come risoluzione, tipo di browser, sistema operativo ;)
gaglioppo
23-03-2004, 23:04
oh, finalmente funziona!
SELECT count(distinct ip, data) As AccessiDistinti
FROM accessi;
perfetto
p.s. La ridondanza immessa non è molto pesante per me, il sito ha pochi utenti (è un sito per pochi visitatori) e non mi importano altre statistiche.... va bene cosi' per ora
Grazie ancora Cionci
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.