Avatar billede zicko Nybegynder
03. maj 2005 - 00:07 Der er 12 kommentarer og
2 løsninger

Nemmeste måde at bruge COUNT til at tælle flere ting i en DB?

Jeg skal samle nogle oplysninger på en side, og har derfor brug for at tælle flere ting i min database, jeg kan sagtens finde ud af at tælle én ting, men problemet kommer når jeg vil tælle flere ting på samme side...

Nogen løsningsforslag?


P.S.

Har gjort således med den ene det er lykkedes mig at tælle op:

sqlCount = "SELECT COUNT(*) AS antalAndet FROM tblSvar WHERE PrimarTraningsmetode='Andet'"

set rs = objconn1.execute(sqlCount)


og så i selve dokumentet har jeg hentet den ind med:
<%=rs("antalAndet")%>
Avatar billede kalp Novice
03. maj 2005 - 00:14 #1
hvilken vil du også tælle op?
Avatar billede kalp Novice
03. maj 2005 - 00:15 #2
for jeg ville gøre det samme med resten.
Avatar billede kalp Novice
03. maj 2005 - 00:18 #3
strSQL = "SELECT COUNT(PrimarTraningsmetode) AS antalAndet FROM tblSvar WHERE PrimarTraningsmetode = 'Andet'"

<%=rs("antalAndet")%>

sådan kan du også gøre det.
Avatar billede zicko Nybegynder
03. maj 2005 - 07:42 #4
Jeg prøvede sådan her:

sqlCountTotal = "SELECT COUNT(*) AS cAntal FROM tblSvar "
sqlCountKlassisk = "SELECT COUNT(*) AS antalKlassisk FROM tblSvar WHERE PrimarTraningsmetode='Akademisk/Klassisk ridekunst' "
sqlCountAndet = "SELECT COUNT(*) AS antalAndet FROM tblSvar WHERE PrimarTraningsmetode='Andet' "
sqlCountEng = "SELECT COUNT(*) AS antalEng FROM tblSvar WHERE PrimarTraningsmetode='Engelsk Dressur' "
sqlCountHMS = "SELECT COUNT(*) AS antalHMS FROM tblSvar WHERE PrimarTraningsmetode='Horsemanship' "
sqlCountHMSklik = "SELECT COUNT(*) AS antalHMSklik FROM tblSvar WHERE PrimarTraningsmetode='Horsemanship/klikkertræning' "
sqlCountIsland =  "SELECT COUNT(*) AS antalIsland FROM tblSvar WHERE PrimarTraningsmetode='Islænderridning' "
sqlCountSkovtur = "SELECT COUNT(*) AS antalskovtur FROM tblSvar WHERE PrimarTraningsmetode='Skovtur' "
sqlCountWestern = "SELECT COUNT(*) AS antalWestern FROM tblSvar WHERE PrimarTraningsmetode='Western' "

Men så kan jeg ikke finde ud af hvordan jeg skal hente de enkelte optællinger ind i dokumentet...

Der må være en nemmere måde at gøre det på, og den må heller ikke være alt for ressourcekrævende af serveren, den skal kun lige tælle de forskellige ting hurtigst muligt, og så lukke adgangen til databasen med det samme.
Avatar billede zicko Nybegynder
03. maj 2005 - 07:43 #5
P.S. Jeg er nybegynder når det kommer til SQL så bær lige over med mig ;) jeg prøver mig bare lidt frem og håber det lykkes.. :)
Avatar billede terry Ekspert
03. maj 2005 - 11:10 #6
try using

cnt = Dcount("SomeField", "SomeTable")
Avatar billede terry Ekspert
03. maj 2005 - 11:12 #7
you can also add a criteria (WHERE)
cnt = Dcount("SomeField", "SomeTable", "ID = 1")
Avatar billede terry Ekspert
03. maj 2005 - 11:31 #8
Ah! I see you are using ASP!!!

So you can NOT use DCount. You will need to use SQL as you are doing now, but you could select the count for all tables in ONE SQL although this will be rather complex
Avatar billede zicko Nybegynder
03. maj 2005 - 14:16 #9
sad og kiggede lidt rundt på eksperten igen, fandt en der havde næsten samme problem, og har brugt hans løsning og fået det til at virke..

http://eksperten.dk/spm/304588

Min funktion ser nu således ud:

Private Function fctCount(strFrom, objConn, objrs)
  strSQL = "SELECT COUNT(*) AS Antal FROM tblSvar WHERE PrimarTraningsmetode='" & strFrom & "'"
  Set objrs = objConn.Execute(strSQL)
  fctCount = objrs("Antal")
End Function

Og kaldet til de forskellige optællinger er f.eks.:

<%Response.Write fctCount("Andet", Conn, rs)%>

Det virker helt fint, men hvis der er nogen der har et forslag til en bedre måde at løse det på, så går pointene til vedkommende.. Jeg synes også den metode jeg har brugt virker en anelse langsom..
Avatar billede terry Ekspert
03. maj 2005 - 14:26 #10
you could make a query with parameters in Access and then use this in your code, but I dont think it is going to be much faster
Avatar billede kalp Novice
03. maj 2005 - 15:00 #11
zicko >> beklager men bruger selv samme fremgangsmåde som dig:) opretter selvfølgelig kun forbindelse til databasen en gang.. og det er når siden loades.
Avatar billede jensriis Novice
30. oktober 2005 - 14:43 #12
Jeg er ikke helt sikker på om det er det du ønsker - men en group by vil give dig sammentælling på flere værdier:
Eks
Din tabel
PrimarTraningsmetode
'Akademisk/Klassisk ridekunst'
'Akademisk/Klassisk ridekunst'
'Akademisk/Klassisk ridekunst'
andet
andet
western
skovtur
skovtur

SQL:
SELECT tblSvar.PrimarTraningsmetode, Count(*) AS Antal
FROM tblSvar
GROUP BY tblSvar.PrimarTraningsmetode;

Vil give flg. resultat:
PrimarTraningsmetode            Antal
'Akademisk/Klassisk ridekunst'    3
andet                            2
skovtur                            2
western                            1

Den kan udbygge med en where ..  clause som f.eks:
SELECT tblSvar.PrimarTraningsmetode, Count(*) AS Antal
FROM tblSvar
where tblSvar.PrimarTraningsmetode  in ("Andet","skovtur")
GROUP BY tblSvar.PrimarTraningsmetode;
Avatar billede zicko Nybegynder
05. januar 2006 - 08:54 #13
Tak for forslag og gode råd! Det lyder interessant jensriis, har ikke lige fået det efterprøvet din metode da det ikke længere er så aktuelt, men vil huske den hvis jeg skal lave noget lignende igen. Du får nogle af pointene, som tak!
Avatar billede zicko Nybegynder
05. januar 2006 - 08:56 #14
Så fik vi den lukket :) beklager det trak så langt ud..
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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