04. februar 2007 - 18:16
Der er
24 kommentarer og 1 løsning
group by
Hej jeg har en tabel der indholder id,ip,tid,dato,data hvergang en går ind på min hjemmeside laves der en ny record. ip (varchar 15) = 123.123.123.123 tid (time) = 23:59:59 dato (date) = 2007.02.04 nu vil jeg gerne tælle hvor mange besøgende der kommer til siden hver time på en dag nogen der kan hjælpe mig med en sql string...
Annonceindlæg fra Computerworld it-jobbank
Mød 3.500+ it-talenter på IT-DAY 2026
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
04. februar 2007 - 18:17
#1
der skal helst komme et svar med 24 records også selvom der en time ikke har været besøg
04. februar 2007 - 18:33
#2
lav en normal GROUP BY og lad din applikation indsætte 0 for de manglende rækker
04. februar 2007 - 18:38
#3
ja tak men det virker ikke helt rigtigt for mig
04. februar 2007 - 18:43
#4
det skal det ! hvis du fortælle rhvilket sproh du bruger, så kan jeg lave et lille eksempel
04. februar 2007 - 19:02
#5
php
04. februar 2007 - 19:20
#6
<?php $con = mssql_connect("localhost", "sa", ""); mssql_select_db("Test", $con); mssql_query("CREATE TABLE dummy (id INTEGER IDENTITY PRIMARY KEY, h INTEGER,txt VARCHAR(255))", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(8,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(9,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(9,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(10,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(12,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(13,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(13,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(14,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(14,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(14,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(15,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(15,'bla bla')", $con); mssql_query("INSERT INTO dummy (h,txt) VALUES(16,'bla bla')", $con); $rs = mssql_query("SELECT h,COUNT(*) AS cnt FROM dummy GROUP BY h", $con); $lasth = -1; while ($row = mssql_fetch_array($rs)) { $h = $row["h"]; $cnt = $row["cnt"]; for($i=$lasth+1;$i<$h;$i++) { print "$i 0<BR>\n"; } print "$h $cnt<BR>\n"; $lasth = $h; } for($i=$lasth+1;$i<24;$i++) { print "$i 0<BR>\n"; } mssql_free_result($rs); mssql_query("DROP TABLE dummy", $con); mssql_close($con); ?>
04. februar 2007 - 19:21
#7
du har sikkert ikke h gemt på den måde, men du kan beregen den og pointen er lasth og de to for løkker
04. februar 2007 - 19:46
#8
Jeg er ikke helt med på hvad du har lavet der... Jeg har i dag en tabel med 15000 records, som jeg gerne nu vil til at lave noget analyse på. Eks: ID | IP | Tid | Dato | Data ------------------------------------------------------- 14999 | 123.123.123.123 | 11:00:00 | 2007-01-01 | blabla 15000 | 123.123.123.123 | 11:00:11 | 2007-01-01 | blabla 15001 | 123.123.123.123 | 11:00:21 | 2007-01-01 | blabla 15002 | 123.123.123.124 | 11:00:25 | 2007-01-01 | blabla 15003 | 123.123.123.123 | 12:00:00 | 2007-01-01 | blabla Nu vil jeg gerne ha et resultat der ser såden her ud: 00,0 01,0 ... 11,0 12,0 ... 22,0 23,0
04. februar 2007 - 20:25
#9
SELECT HOUR(tid) AS h, COUNT(*) AS cnt FROM tabel GROUP BY HOUR(tid) og så laver du din while løkke i PHP med last h og de 2 for løkker som i mit eksempel
04. februar 2007 - 21:25
#10
takker så virker det næsten... men sammen IP skal kun tælle en gang pr time noget du let kan løse ?
04. februar 2007 - 21:48
#11
SELECT h,COUNT(*) AS cnt FROM (SELECT DISTINCT ip,HOUR(tid) AS h FROM tabel) x GROUP BY h måske
04. februar 2007 - 21:51
#12
SELECT h,COUNT(*) AS cnt FROM (SELECT DISTINCT ip,HOUR(tid) AS h FROM Visit_Log) x GROUP BY h #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT DISTINCT ip,HOUR(tid) AS h FROM Visit_Log) x GROUP BY h
04. februar 2007 - 21:55
#13
hvilken version af MySQL ?
04. februar 2007 - 21:57
#14
MySQL 4.0.26
04. februar 2007 - 22:03
#15
tja så duer en subquery jo ikke
04. februar 2007 - 22:04
#16
det er måske først blevet muligt i en nyere version
04. februar 2007 - 22:04
#17
prøv: SELECT HOUR(tid) AS h, COUNT(DISTINCT ip) AS cnt FROM tabel GROUP BY HOUR(tid)
04. februar 2007 - 22:04
#18
ja subquery er 4.1 og nyere
04. februar 2007 - 22:05
#19
ok så var det tæt på... hvad gør man så....
04. februar 2007 - 22:09
#20
har du prøvet 04/02-2007 22:04:06 ?
04. februar 2007 - 22:11
#21
ups så jeg ikke lige...
04. februar 2007 - 22:21
#22
det ser sq ud til at virke vil lige lave lidt test med det... Og så ser det jo ganske enkelt ud...
04. februar 2007 - 22:33
#23
Det virker jo... så mangler vi bare et svar
04. februar 2007 - 22:36
#24
kommer her
04. februar 2007 - 22:50
#25
takker mange gange det var rart at få det til at virke
Computerworld tilbyder specialiserede kurser i database-management