Gå til innhold

Hente ut besøksstatistikk fra mysql-tabell


Anbefalte innlegg

Jeg vet ikke om dette er mulig uten å bruke php, så spør her.

 

Tabellen min (mysql) registrer besøk:

 

ar - maned - dato - time - antall

 

For eksempel:

 

2005 - 09 - 26 - 15 - 00 - 1700

 

Hvordan henter jeg ut antall besøkende hver dag sortert etter dagen med flest til færest brukere?

 

For eksempel:

 

26-09-2005: 9085 besøkende

04-04-2005: 8705 besøkende

 

PS: Ja, det er et tungvint system. Er derfor jeg har laget et nytt, og er derfor jeg gjerne vil vite svaret på besøkstallene før jeg fjerner de og starter med det nye systemet/nye tabellen.

Lenke til kommentar
Videoannonse
Annonse
SELECT * FROM `besok` ORDER BY `antall` DESC (** tror jeg, husker aldri forskjellen mellom ASC og DESC **) WHERE 1

Ascending er stigende, og det betyr at det eldste kommer først. Descending er derimot synkende, noe som gjør at det nyeste kommer først..

 

Og for å gi dette med teskje, slik at alle er helt sikre.

 

Ascending:

1

2

3

4

5

6

7

8

9

 

Descending:

9

8

7

6

5

4

3

2

1

Lenke til kommentar

Hva med å gjøre en siste php-operasjon?

 

Legg til en kolonne til i tabellen som du kaller (f.ek) date.

Kjør deretter en spørring hvor du henter alt fra tabellen, for så kjøre en while hvor du imploderer alle datokolonnene dine til et datoformat MySQL forstår og legger dette inn i den nye kolonnen i tabellen din.

Etter den operasjonen burde sorteringen være enkel...

 

Det er sikkert betydelig enklere løsninger enn dette ute og går, men haster det kommer du kanskje i mål med dette? :)

 

Mvh Primaxx

Lenke til kommentar

Torbjørn: Se PS i første post. Før jeg slutter med "dette tullet her" som du så treffende kaller det, vil jeg gjerne vite noen nøkkeltall :)

 

PS: Ja, det er et tungvint system. Er derfor jeg har laget et nytt, og er derfor jeg gjerne vil vite svaret på besøkstallene før jeg fjerner de og starter med det nye systemet/nye tabellen.

 

primaxx: nops, ingen hast. bare en liten kuriositet for meg... har begynt med en bedre tabellstruktur, men vil gjerne ha noen tall før jeg sletter denne tabellen

 

Christt: Vedlegg. Hver time døgnet igjennom oppdateres tabellen med hvor mange som har vært innom den aktuelle timen. Som det fremgår av bildet: Den 27. september 2005 mellom klokken 04:00 og 04:59, var det 689 innom.

Jeg lurer på: Hvilken _dag_ var det flest innom? Altså, se bort fra klokkeslett, hvilken dato i hvilken måned i hvilket år var flest innom?

 

Jeg tenker: Summen av alle antall i hvert døgn. Dette vil jeg gjerne gjøre i mysql uten bruk av php.

 

Kan være forvirrende at jeg har kalt dag-kolonnen for dato. Men gøy om det går an - takk for all hjelp :)

post-30-1128020224_thumb.jpg

Endret av fjartan
Lenke til kommentar

Fjartan, jeg må nok si at forslagene om endring da felttype er den eneste korrkete løsningen.

 

Det betyr der i mot ikke at du ikke skal få løse det på din måte.

For å få til dette så må du gruppere feltene. I utgangspunktet så har du ingen felter som det er mulig å grupere på der, så derfor må vi lage det i spørringen. Du ønsker å telle avhengig av da, men uavhengig av time. Da lager vi et felt hvor vi slår sammen felten ar, maned og dato:

CONCAT(ar, maned, dato) blir da det vi skal gruppere etter, så da blir spørringen din ganske rett frem:

 

SELECT CONCAT(ar, maned, dato), COUNT(id) FROM tabellnavn GROUP BY CONCAT(ar, maned, dato)

Lenke til kommentar

Ikke mulig å nekte for at det er enklere med en annen felttype.

 

Basert på det du skrev, ble dette den riktige løsningen:

 

SELECT CONCAT(ar, maned, dato), SUM(antall) FROM tabellnavn GROUP BY CONCAT(ar, maned, dato)

 

COUNT(id) ga meg bare 24 - altså hvor mange timer døgnet har.

 

Case svolved, takk for all hjelp, spennende statistikklesning venter!

Lenke til kommentar

Beklager, det var selvfølgelig SUM som er korrekt - ikke alltid like lett når man ikke har databasen selv.

 

Problemet Fjartan er ikke hva som er enklest, men hva som er best. Ved å bruke tidfunksjonene til MySQL vil spørringene dine bly mye enklere = mye lettere for serveren. I det script som ditt, hvor du har opptil 600 besøkende i timen så må du faktisk ta slike hensyn.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...