[sql] Count op een query?

Pagina: 1
Acties:

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Hoi,


Ben atm bezig een soort webalizer te schrijven, maar dan op een db.
Ik heb deze query:
code:
1
select distinct remote_host from access_log a where a.time_stamp < '1144965599' and a.time_stamp > '1144879200';


Deze query vist alle unieke IPs uit de tabel, waarbij de datum vandaag is.
Echter wil ik dit nu tellen.

Ik merk wel dat ik teveel heb geslapen in de SQL colleges :+ (doe 4e jaar informatica op HBO).
Heb al gezocht op dev.mysql.com en hier op het forum ;)


Dit werkte niet:
code:
1
2
3
4
5
6
select count(distinct  remote_host) from access_log a where ( a.time_stamp < '1144965599' and a.time_stamp > '1144879200' );

mysql> select  count(*) in ( select distinct remote_host from access_log a where a.time_stamp < '1144965599' and a.time_stamp > '1144879200');


mysql> select  count(*) from ( select distinct remote_host from access_log a where a.time_stamp < '1144965599' and a.time_stamp > '1144879200');


Kan iemand me aub een beetje de goede richting in bumpen? Een kant-en-klare fix is niet nodig, maar een hint is sowieso wel leuk.


het gaat btw om mysql-4.1

[ Voor 9% gewijzigd door Boudewijn op 13-04-2006 22:26 ]


  • Observer
  • Registratie: April 2001
  • Laatst online: 22-02 09:25
Je wilt het aantal bezoeken per ip per dag?

SELECT remote_host, count(*) AS visits
FROM access_log a
WHERE ( a.time_stamp < '1144965599' and a.time_stamp > '1144879200' )
GROUP BY remote_host;

EDIT: of wilde je het aantal unieke ip's per dag?

Wat dacht je van:
SELECT DISTINCT remote_host
FROM access_log a
WHERE ( a.time_stamp < '1144965599' and a.time_stamp > '1144879200' )

En dan het aantal teruggegeven regels op halen? (mysql_num_rows in PHP)

[ Voor 46% gewijzigd door Observer op 13-04-2006 22:25 ]

There are 10 kinds of people in the world: those that understand binary and those that don't


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
nee ik wil dat niet direct.

ik wil het aantal unieke IP's in dat tijds-bestek.

  • Blackbird-ce
  • Registratie: September 2005
  • Laatst online: 16-02 21:58
[code]
select count(remote_host)
from access_log a
where a.time_stamp < '1144965599' and a.time_stamp > '1144879200';
[/code]

geeft 1 regel: totaal aantal remote_host's


[edit]
verkeerd gelezen... Dit wil je:

code:
1
2
3
4
5
6
SELECT count( * ) 
FROM (
select distinct remote_host
from access_log a
where a.time_stamp < '1144965599' and a.time_stamp > '1144879200';
) AS tmp

[ Voor 70% gewijzigd door Blackbird-ce op 14-04-2006 00:13 ]


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Blackbird-ce schreef op vrijdag 14 april 2006 @ 00:09:
code:
1
2
3
4
5
6
SELECT count( * ) 
FROM (
select distinct remote_host
from access_log a
where a.time_stamp < '1144965599' and a.time_stamp > '1144879200';
) AS tmp
werkt niet.

Even wat geknutseld:

code:
1
2
3
4
5
6
SELECT count( * ) 
FROM (
select distinct remote_host
from access_log a
where a.time_stamp < '1144965599' and a.time_stamp > '1144879200'
) AS tmp;


werkt

even de ; in de subquery geloosd :)

thanks btw!

  • _eXistenZ_
  • Registratie: Februari 2004
  • Laatst online: 17-02 10:46
Welke taal? Of mag het alleen in query's?

In PHP kan je bijvoorbeeld gewoon mysql_num_rows gebruiken...

There is no replacement for displacement!


  • Blackbird-ce
  • Registratie: September 2005
  • Laatst online: 16-02 21:58
Boudewijn schreef op vrijdag 14 april 2006 @ 01:31:
[...]
even de ; in de subquery geloosd :)
Oops. Had de query hier zelf lokaal getest met wat tabellen die ik zelf had, dus moest hier en daar wat kopieren uit jouw originele query (lees: jouw gehele query als subquery). Daar stond per ongeluk die ; in, en was ik vergeten eruit te halen :X

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Ik denk dat SELECT COUNT(Distinct IP) FROM ... ook wel bij MySQL moet werken

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
P_de_B, dat werkt niet hooor.


Ja het is een php progsel dat mysql gebruikt, en maybe straks ook postgre ondersteunt.

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 16:26

AW_Bos

Liefhebber van nostalgie... 🕰️

eXistenZ_NL schreef op vrijdag 14 april 2006 @ 08:11:
Welke taal? Of mag het alleen in query's?

In PHP kan je bijvoorbeeld gewoon mysql_num_rows gebruiken...
Op een druk bezochte site is dit veels te langzaam gewoon. Niet aan te raden... :X

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
vertel :)

ik wil het btw wel zo schjrijven dat het script maar 1x per uur mag draaien ;) (iets met timestamp in de DB leggen enzo)

[ Voor 101% gewijzigd door Boudewijn op 15-04-2006 13:34 ]

Pagina: 1