Avatar billede andersthingholm Nybegynder
14. februar 2005 - 08:29 Der er 6 kommentarer og
1 løsning

Statistik udtræk

Hej,

Jeg skal bruge en hånd til at par udtræk.

Jeg har denne tabel, som indeholder sidevisninger. JEg skal bruge et udtræk som viser pageName og antallet af records med dette navn. Listen skal sorteres faldende.

CREATE TABLE `pageviews` (
  `id` int(11) NOT NULL auto_increment,
  `statDate` datetime NOT NULL default '0000-00-00 00:00:00',
  `statURL` text NOT NULL,
  `statKey` varchar(32) NOT NULL default '',
  `visitorID` varchar(255) NOT NULL default '',
  `pageName` varchar(255) NOT NULL default '',
  `previousPageName` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

Der udover har jeg en tabel som denne:

CREATE TABLE `hits` (
  `hidID` int(11) NOT NULL auto_increment,
  `statDate` datetime NOT NULL default '0000-00-00 00:00:00',
  `statURL` text NOT NULL,
  `statKey` varchar(32) NOT NULL default '',
  `visitorID` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`hidID`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

Jeg vil jeg gerne have 2 udtræk;

1. En, der viser Monday (antal hits), Tuesday (antal hits) osv.
2. en, der viser antallet af hits mellem 00:00-01:00, 01:00-02:00 osv.

Disse to udtræk skal bare være et gennemsnit af alle records i hits.

Jeg håber at nogen kan hjælpe.

VH

Anders Thingholm
Avatar billede Slettet bruger
14. februar 2005 - 12:48 #1
Jeg forstår ikke lige meningen med den anden tabel? Den indeholder jo bare et subset af den første.

Måske kan du bruge noget i stil med:

SELECT pageName, WEEKDAY(statDate) AS ugedag, count(*) AS antal FROM pageviews GROUP BY pageName, ugedag ORDER BY antal

og

SELECT pageName, HOUR(statDate) AS time, count(*) AS antal FROM pageviews GROUP BY pageName, time ORDER BY antal
Avatar billede andersthingholm Nybegynder
14. februar 2005 - 13:09 #2
Hej igen,

OK, nu har jeg to udtræk :

$query = mysql_query("SELECT pageName, WEEKDAY(statDate) AS weekday, count(*) AS count FROM pageviews WHERE statKey='$USER_STAT_KEY' GROUP BY pageName, weekday ORDER BY count");

og

$query = mysql_query("SELECT pageName, HOUR(statDate) AS time, count(*) AS count FROM pageviews WHERE statKey='$USER_STAT_KEY' GROUP BY pageName, time ORDER BY count");

Men den skal gerne trække alle mulige ud - også selvom der er 0 records.
Avatar billede Slettet bruger
14. februar 2005 - 13:52 #3
Hvorfra skal den få at vide, at der er en side, hvis den ikke har en record i tabellen?
Avatar billede andersthingholm Nybegynder
14. februar 2005 - 14:04 #4
Hej igen,

Ja det giver jo god mening med siderne, men ikke ugedagene.

VH

Anders
Avatar billede Slettet bruger
14. februar 2005 - 14:11 #5
Jeg vil mene, at du er nødt til at håndtere ugedage eller timer uden hits i PHP-koden.
Avatar billede andersthingholm Nybegynder
14. februar 2005 - 14:14 #6
OK, tak - smider du et svar?
Avatar billede Slettet bruger
14. februar 2005 - 14:28 #7
Jeps
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester