Avatar billede md_craig Nybegynder
09. maj 2003 - 12:15 Der er 18 kommentarer og
1 løsning

Optællings lykke (loop)

Jeg har en database, hvor jeg har oplysninger om besøgende, således jeg kan holde statestik over hvor mange der har været forbi en bestemt side...

Nu skal jeg så have vist disse data, i form af grafer... og jeg udvælger så fx en periode, fra 05/05/2003 - 09/05/2003... altså 5 dage...

Nu har jeg så følgende udtrækninger:

131.165.145.89 - 20030505
80.196.239.91 - 20030505
80.62.17.226 - 20030505

131.165.147.4 - 20030506
131.165.203.129 - 20030506
194.182.129.61 - 20030506
195.82.214.247 - 20030506
213.150.43.18 - 20030506

131.165.145.89 - 20030507
194.255.110.4 - 20030507
195.50.35.4 - 20030507
80.162.213.142 - 20030507
80.163.83.94 - 20030507
81.19.236.130 - 20030507

131.165.145.89 - 20030509
62.242.104.26 - 20030509

Nu skal disse jo så lægges sammen, således at jeg får nogle værdier for hver dag... altså:

20030505 = 3 Klik
20030506 = 5 Klik
20030507 = 6 Klik
20030508 = 0 Klik
20030509 = 2 Klik

Men hvordan kan jeg lige gøre dette ???
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 12:22 #1
select count(*) as antal, dato group by dato order by dato
Avatar billede md_craig Nybegynder
09. maj 2003 - 12:30 #2
SELECT Counter.ID, Counter.IP, Counter.Dato, Counter.Uge, Counter.Klik FROM [Counter] WHERE (((Counter.Dato)>='20030505') AND ((Counter.Dato)<='20030509')) ORDER BY Counter.Dato ASC, Counter.Uge ASC, Counter.IP ASC;

Ja det var så min SQL....

Så er de lige jeg skal være helt med...

HVordan ville den skulle se ud...
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 12:45 #3
SELECT count(*) as antal, Counter.Dato FROM [Counter] WHERE (((Counter.Dato)>='20030505') AND ((Counter.Dato)<='20030509')) group by Counter.dato ORDER BY Counter.Dato ASC
Avatar billede md_craig Nybegynder
09. maj 2003 - 12:57 #4
Nu får jeg denne Error :

Error Type:
Microsoft JET Database Engine (0x80040E21)
You tried to execute a query that does not include the specified expression 'Uge' as part of an aggregate function.
/statestik/Stat.asp, line 78

Når jeg bruger følgende sætning:

SELECT Count(*) AS Antal, Counter.Dato, Counter.Uge, Counter.Klik FROM [Counter] WHERE (((Counter.Dato)>='20030505') AND ((Counter.Dato)<='20030509')) GROUP BY Counter.Dato ORDER BY Counter.Dato ASC

Men ikke med:

SELECT count(*) as antal, Counter.Dato FROM [Counter] WHERE (((Counter.Dato)>='20030505') AND ((Counter.Dato)<='20030509')) group by Counter.dato ORDER BY Counter.Dato ASC

Hvad er grunden til det, kan jeg ikke udvælge flere felter ???
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 13:13 #5
I dit eksempel i spørgsmålet har du ikke uge med. Hvorfor
blander du det så ind i forespørgslen?
Avatar billede md_craig Nybegynder
09. maj 2003 - 13:29 #6
Nej... uge var ikke lige nødvendig, kun i en anden situation hvor det er uger jeg vælger... og klik skal jeg bruge i forbindelse med SUM og ikke COUNT.. så det virker sådan set nu... indtil videre...
Avatar billede md_craig Nybegynder
09. maj 2003 - 13:31 #7
Nu skal jeg egentil bare have fundet ud af hvordan jeg får implementeret d. 8... for nu retunere den:

6 - 20030505
5 - 20030506
7 - 20030507
4 - 20030509

Men jeg ville meget gerne have retuneret:

6 - 20030505
5 - 20030506
7 - 20030507
0 - 20030508
4 - 20030509
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 13:35 #8
Det med 0'et er nok nemmest ved i ASP når du løber igennem dine datoer
(de kommer jo i rækkefølge), at teste for om der er "huller". Og skrive 0'et selv.

Skal du gruppere på uge (ha' antal hits pr uge), skal du sige
"...group by uge" (eller hvad dit felt nu hedder)
Avatar billede md_craig Nybegynder
09. maj 2003 - 13:39 #9
Det med uge ved jeg...

Og jeg ved også at det er næmmest selv at sætte hullet ind...

Men det er bare ikke lige næmt og overskur, for det indebære meget, for så skal jeg ind og tjecke for længden af måneden...

Det har jeg sådan set lavet, i den kalender hovr man vælge perionden... men det var nu ikke lige just overskueligt...
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 13:44 #10
Nu har jeg i frisk erindring hvordan datofunktioner i PHP er skruet
sammen, og der vil det være et par linier eller 3 ud over
det normale gennemløb. Men det skal nok passe, at der er mere
besværligt i ASP.
Avatar billede md_craig Nybegynder
09. maj 2003 - 13:44 #11
Ahh.. ok det er ikke så slemt som den kalender var... men lige at skulle smække det ind, det giver mig sQ lidt hovedbrud...
Avatar billede md_craig Nybegynder
09. maj 2003 - 13:51 #12
altså vi ved jo hvor lange månederne er... og det er de altid, det er kun februar der falder ud... hvor den hvert 4. år er 29 dage... men det kan hurgtigt tjeckes ved at:

IF Ubound(Split((Ar / 4), ",")) = 1 THEN
  Slutdag = 28
ELSE
  Slutdag = 29
END IF
END IF

Men lige at overskue det... det er stadig det... ved sQ ikke om man skal pille det over i et Array hvor man har fra sit RS:

6 - 20030505
5 - 20030506
7 - 20030507
4 - 20030509

og så få bygget sit Array op så man har:

6 - 20030505
5 - 20030506
7 - 20030507
0 - 20030508
4 - 20030509

så skal der lige kigges efter den største værdi... så man kan bestemme skalaen... og så burde det være ved at falde på plads...
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 13:55 #13
Nej, lad ASP/VB holde styr på dage i måneder. Det er der da
trods alt funktioner til - så meget kan jeg huske ...
Avatar billede md_craig Nybegynder
09. maj 2003 - 14:05 #14
jeg bruger hvad der er næmmest... og da jeg lavede min kalende, fant jeg overstående næmmest, det kan jeg siden hen også se at så mange andre bruger i den forbindelse, det kan dog godt være det andet er næmere i forbindelse med en graf opbygning... men nu må vi se...
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 14:07 #15
Hedder de ikke datediff, dateadd og sådan noget. Så er der lige formatet
med 2003mmdd som du måske ikke lige får tilbage fra de funktioner.
Avatar billede md_craig Nybegynder
09. maj 2003 - 14:11 #16
JEg kan selvfølgelig også validere en dato, men hvad er det nu lige funktionen er for det ???
Avatar billede md_craig Nybegynder
09. maj 2003 - 14:15 #17
Jo, DateDiff bruger du til ar bestemme antal dage mellem 2 Datoer... og DateAdd er så at sige lige det modsatte, altså hvor du kan ligge en dag til, eller trække en fra...

Det kunne man selvfølgelig godt bruge...
Avatar billede md_craig Nybegynder
09. maj 2003 - 15:37 #18
sådan så lykkedes det at få den til at skrive:

3 ; 2003/05/05 - - 2003/05/05
5 ; 2003/05/06 - - 2003/05/06
6 ; 2003/05/07 - - 2003/05/07
0 ; 2003/05/08 - - 2003/05/08
2 ; 2003/05/09 - - 2003/05/09
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 18:22 #19
Flot !
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
Kurser inden for grundlæggende programmering

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