Avatar billede skjoldby Nybegynder
05. april 2001 - 01:46 Der er 11 kommentarer og
1 løsning

Lidt speciel count

Hejsa...

Jeg har følgende tabel (ved godt udseendet bliver fucket op når jeg poster den):
ID | subMenuItem | menuSubID | menuTopID
----------------------------------------------------------------
1  Salg        3        1 
2  Lager        3        1 
3  Værksted    3         1 
4  Service    2        1
5  Teknik    2         1
6  Autoskade    5         2
7  Taksator    8        2

Jeg skal nu tælle hvor mange forskellige menuSubID der er under menuTopID. F.eks. hvis jeg søger på menuTopID=1 så skal den kun tælle antallet 2.
Er i med?

Jeg er kun interesseret i en løsning hvis det kan gøres direkte gennem en SQL sætning. For jeg ved godt man bare kan lave et loop og teste om menuSubID der var i forrige recordset er det samme som det nuværende, og kun tælle hvis ikke det var.

Jeg håber I er med, ellers skal jeg prøve at forklare det lidt bedre.

Skjoldet
Avatar billede ortrak Nybegynder
05. april 2001 - 01:50 #1
Har ikke helt forstået spørgsmålet.

/ortrak
Avatar billede skjoldby Nybegynder
05. april 2001 - 01:57 #2
Ok. Lyder også underligt. Det jeg vil undgå er følgende:

SQLCount = \"SELECT menuSubID FROM menusubsub WHERE menuTopID=1\"
Set RSCount = Conn.Execute(SQLCount)
totalSubs = 0
Do While Not RSCount.eof
    if lastID <> RSCount(\"menuSubID\")
        totalSubs = totalSubs +1
    end if
    lastID = RSCount(\"menuSubID\")
    RSCount.MoveNext
Loop   

Kan man lave samme resultat med en SQL sætning hvor man f.eks. bruger SELECT COUNT() på en eller anden måde.
Avatar billede skjoldby Nybegynder
05. april 2001 - 02:00 #3
Mangler selfølgelig et \'then\' i sætningen: if lastID <> RSCount(\"menuSubID\")
Avatar billede slash Nybegynder
05. april 2001 - 07:48 #4
et opkast fra minde side:

sql =\"select count(menusubID) as antal from menusubsub where menutopID=1\"
Avatar billede skjoldby Nybegynder
05. april 2001 - 07:58 #5
Det er ikke det jeg søger. Fyrre du den der sql sætning af får du rs(\"antal\") = 5 fordi der er 5 poster med menuID=1...
Avatar billede slash Nybegynder
05. april 2001 - 08:07 #6
er det så dette du søger:

sql =\"select count(menusubID) as antal from menusubsub where menutopID=1 and menusubid=2\"
Avatar billede skjoldby Nybegynder
05. april 2001 - 08:20 #7
Nej Prøv lige at læs mit spørgsmål en gang til:

Jeg skal tælle hvor mange forskellige menuSubID\'er der er når jeg f.eks. søger på menutopID=1.

Som du kan se findes der kun 2 slags menuSubID\'er når der søges på menutopID=1, nemlig menuSubID 2 og menuSubID 3. De forekommer så flere gange, men det er jeg ikke interesseret i. KUN antallet af forskellige menuSubID.

Med nu?

Jeg ved det er svært at forstå og tro mig, det er lige så svært at forklare :-)
Avatar billede slash Nybegynder
05. april 2001 - 08:23 #8
jeg prøver igen så.... er just ikke 100% med på dit ? endnu, men mon ikke dette kunne hjælpe, at bruge DISTINCT i din select, DISTINCT skulle jo eliminere dubletter!

sql =\"select count(DISTINCT menusubID) as antal from menusubsub where menutopID=1\"
Avatar billede skjoldby Nybegynder
05. april 2001 - 08:33 #9
Hehe. Lige det jeg søger og det virker perfekt!Har faktisk aldrig sat mig ind i DISTINCT, men den må jeg squ huske nu... Pointene er dine.
Avatar billede slash Nybegynder
05. april 2001 - 08:36 #10
takker ;-)

Jæpper, DISTICT er uundværlig føler jeg.... specielt hvis man har overtaget et system med redundante data! Jeg kan kun anbefale at du læser/bruger SQL-Server books online - der er sgu forklaringer til alle SQL-funktioner... kan downloades fra microsoft, men kan desv. ikke huske URL\'en!
Avatar billede skjoldby Nybegynder
05. april 2001 - 08:39 #11
Hvis du finder den så husk lige på mig. Jeg har længe manglet en ordenlig SQL dokumentation.
Avatar billede slash Nybegynder
05. april 2001 - 08:42 #12
denne URL fører dig hen til siden hvor du kan downloade den...

http://www.microsoft.com/SQL/productinfo/70books.htm

Det er en fil på 12 MB, men den er ventetiden værd ;-)
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