Avatar billede punnishment Nybegynder
01. april 2002 - 01:09 Der er 15 kommentarer og
1 løsning

Flere counts på hurtigste måde?

Hvordan laver man 74 forskellige counts på den hurtigste måde??

Forløbig har jeg 2 muligheder:

a = "|"
For x = 1 TO 74
set rs = conn.Execute("SELECT COUNT(id) AS Antal FROM bank WHERE CatId = " & x)
a = a & rs("antal") & "|"
set rs = nothing
Next
a = split(a, "|")


eller


a = "|"
x = 0
Do While Not x = 74
x = x+1
set rs = conn.Execute("SELECT COUNT(id) AS Antal FROM bank WHERE CatId = " & x)
a = a & rs("antal") & "|"
set rs = nothing
Next
a = split(a, "|")
Avatar billede erikjacobsen Ekspert
01. april 2002 - 01:10 #1
du bruger en group by
Avatar billede punnishment Nybegynder
01. april 2002 - 01:14 #2
De er nogenlunde på samme hastighed, efter en masse test. Derfor vil jeg fortrække For x... pga. overskueligheden og mindre tegn i dokumentet...


men findes der en anden MEGET bedre og hurtigere løsning?

denne proccess tager mig ca. 5 sekunder da selve siden uden dette loades på ca. 1,5 sekundt, altså siden loades på 6,5 sekunder og er HELT uacceptabelt..

Nogen ideer til at løse dette problem?
Avatar billede punnishment Nybegynder
01. april 2002 - 01:15 #3
dybere forklaring?
måske et lille eksempel?
Avatar billede erikjacobsen Ekspert
01. april 2002 - 01:15 #4
ja da, du skal bruge en group by
Avatar billede punnishment Nybegynder
01. april 2002 - 01:16 #5
hvordan bruger jeg sådan en?
Avatar billede erikjacobsen Ekspert
01. april 2002 - 01:16 #6
Prøv selv at læse om GROUP BY i din SQL-bog (eller hvor du
nu lærer SQL)
Avatar billede punnishment Nybegynder
01. april 2002 - 01:18 #7
hehe, jeg har lært SQL gennem kode eksempler og artikler :) Sååå..

kan du ikke komme med en lille eksempel?
Avatar billede erikjacobsen Ekspert
01. april 2002 - 01:21 #8
Nej, jeg gider ikke hjælpe en person, der ikke laver blot en
lille bitte indsats for at få sit teoretiske fundament i orden.
Du har simpelthen ikke et sted du lige kan slå "GROUP BY" op
og læse lidt om den. Utroligt. Hvad vil du drive det til i livet, kan
man spørge sig selv.

Bare rolig - der kommer nok en pointjæger forbi og hjælper dig
Avatar billede punnishment Nybegynder
01. april 2002 - 01:24 #9
Laver jeg ikke en indsats? Du er da lam at høre på! Jeg ved ikke om du har læst det jeg har skrevet i spørgsmålet "Forløbig har jeg 2 muligheder" kan os fortolkes "Jeg ved sku ikke hvad jeg skal gøre!!!" og hvis jeg havde en SQL manual havde jeg nok slået op, istedet for at høre på dine lamme kommentare!
Avatar billede punnishment Nybegynder
01. april 2002 - 01:25 #10
Nu har jeg fundet en SQL manual..: http://www.w3schools.com/sql/

Jeg takker for hjælpen IDIOT!
Avatar billede erikjacobsen Ekspert
01. april 2002 - 01:26 #11
Jamen så skaf dig dog en SQL-manual - eller find noget på
nettet: www.mysql.com fx - det meste virker også i Access, hvis
det er den du bruger. Der kan du fx finde noget om GROUP BY
Avatar billede punnishment Nybegynder
01. april 2002 - 01:39 #12
selv om du ikke har fortjent pointsene for du dem, fordi du sat mig på rætte spor - jeg takker for det alligevel!

SQL = "SELECT id,SUM(CatId/CatId) AS Antal FROM bank GROUP BY CatId"
Avatar billede punnishment Nybegynder
01. april 2002 - 01:39 #13
skal du ikke svare?
Avatar billede punnishment Nybegynder
01. april 2002 - 01:51 #14
Fedt..!

Nu loades siden på 2,2 sekunder og database informationerne hentes fra webhotellen (testet lokalt), det må så betyde den nok tager 2 sekunder at loade (det er da en start) :)

Hvis der er folk der skulle være interesserede:
Jeg har skrevet alle kategorierne ned og sat en array ud for det som angiver hvor mange poster der er i hver kategori.;
Kat1 <%=arr(1)%> ' det er os kategori iden
Kat2 <%=arr(2)%> ' det er os kategori iden
Kat3 <%=arr(3)%> ' det er os kategori iden
Kat4 <%=arr(4)%> ' det er os kategori iden
Kat5 <%=arr(5)%> ' det er os kategori iden


Koden:
'Først laver jeg de tomme arrays
arr = "|"
For x = 1 TO 5
arr = arr & "0|"
Next
arr = Split(arr, "|")
'der efter omdøbber jeg de arrays som tilhøre kategorier med indhold i
set rs = conn.Execute("SELECT catid,SUM(CatId/CatId) AS Antal FROM bank GROUP BY CatId")
Do While Not rs.EOF
arr(rs("catid")) = rs("Antal")
rs.movenext
Loop
set rs = nothing


nemt og enkelt!
Avatar billede erikjacobsen Ekspert
01. april 2002 - 08:03 #15
Det glæder mig - behold du bare dine point. Det er alligevel alt
for mange for blot at sige "group by".
Avatar billede punnishment Nybegynder
15. januar 2005 - 16:08 #16
lukker
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