Count / Group By probleem
Ik ben bezig met een bezoekersteller te maken. Vooral om met sommige dingen meer ervaring op te doen. Alleen ik loop nu tegen een probleem aan.
Elke keer als iemand op een pagina komt word hij in de database gezet en die ziet er zo uit:
id | datum(date) | ip | Host | Useragent
Nu wil ik dus het aantal bezoekers + pagevieuws laten weergeven. (het gaat nu dus alleen om de velden datum en ip)
ik heb twee records in de database zitten
2008-03-09 | 0.0.0.0
2008-03-09 | 0.0.0.0
Nu heb ik deze query:
Code (php)
1
"SELECT DATE_FORMAT(datum,'%d-%m-%Y') AS nl_datum, COUNT(ip) AS aantalip, COUNT(datum) AS aantal FROM bezoeker GROUP BY datum, ip"
alleen ipv dat er dus 1 bezoeker uit komt en 2 pagevieuws komen ze allebei op 2 uit.
Kan iemand mij veder op weg helpen? moet ik dan met een subquery werken of wat doe ik fout want heb veder namelijk nog nooit gebruik gemaakt van Count en Group By.
Alvast bedankt!
Remco
Pageviews per dag:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum,
COUNT(ip) AS pageviews
FROM
tabel
GROUP BY
datum
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum,
COUNT(ip) AS pageviews
FROM
tabel
GROUP BY
datum
Bezoekers per dag (lees: aantal unieke ip's):
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum,
COUNT(DISTINCT(ip)) AS pageviews
FROM
tabel
GROUP BY
datum
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum,
COUNT(DISTINCT(ip)) AS pageviews
FROM
tabel
GROUP BY
datum
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Oke maar het is dus niet mogenlijk om het te doen in query?
ps. Het is altijd een beetje spelen met GROUP BY en de resultaten die je krijgt, maar je moet er wel mee oppassen. Bij een query die eigenlijk niet mogelijk is, verzint MySQL gewoon zelf resultaten om terug te geven. Dus soms kun je beter meerdere queries gebruiken dan 1 query waarvan je niet zeker weet of de resultaten wel betrouwbaar zijn...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Bedankt voor de hulp en de tip!
GROUP BY: Het juiste gebruik ervan
Meer informatie over het juiste gebruik van GROUP BY vindt je in bovenstaande tutorial. Daar leg ik ook uit welke queries met GROUP BY eigenlijk niet kunnen en waar MySQL resultaten gaat verzinnen...
Meer informatie over het juiste gebruik van GROUP BY vindt je in bovenstaande tutorial. Daar leg ik ook uit welke queries met GROUP BY eigenlijk niet kunnen en waar MySQL resultaten gaat verzinnen...
Ik het net een beetje die tutorial door gelezen en toen bedacht ik me dat het wel in 1 query kan en ook gewoon betrouwbaar is en dat is zo:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum,
COUNT(DISTINCT(ip)) AS bezoekers,
COUNT(ip) as pagevieuws
FROM
bezoeker
GROUP BY
datum
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum,
COUNT(DISTINCT(ip)) AS bezoekers,
COUNT(ip) as pagevieuws
FROM
bezoeker
GROUP BY
datum
Want op deze manier groeppeer je hem op datum. Je telt met COUNT(ip) alle records van die datum en met COUNT(DISTINCT(ip)) tel je elk ip adres 1x binnen de group by van die datum.
op die manier is hij toch nog steeds betrouwbaar en zit hij gewoon in 1 query of zie ik nu wat over het hoofd?