Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 14:20 Der er 23 kommentarer og
1 løsning

COUNT DISTINCT

Hey

Hvordan bruger jeg dette når jeg bruge MS ACCESS... er der en anden udvej for at få samme resultat?


//Bjarke
Avatar billede eagleeye Praktikant
06. oktober 2002 - 14:23 #1
?? ikke helt med men du kan bruge GROUP BY,..

"SELECT ID, Count(ID) as antal FROM tabel GROUP BY ID"

Så tæller den antalle af ID for hver unik ID..eks..:

ID
2
2
3

Så giver det
ID  antal
2    3
3    1
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 14:29 #2
fx:

ID
1
1
1
1
2
2
2
2
3
3
3
3


Så skal det give 3 <-- altså der er 3 forskellige tal... hvordan gør man det?
Avatar billede eagleeye Praktikant
06. oktober 2002 - 14:32 #3
Så skal det være men jeg er ikke sikker på det virker med Access...:

"SELECT Count(distinct ID) as antal FROM tabel"
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 14:36 #4
ja, det er det samme jeg har læst på w3schools.
Og de skriver...


Note: The following example works with ORACLE and Microsoft SQL server but not with Microsoft Access.
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 14:37 #5
... det var derfor jeg stillede spørgsmålet på E, hvis der du var en måde at gøre det samme, bare i MS Access...
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 15:00 #6
...det kunne jo være at der var en der er en haj til ASP, og kunne løse det med en løkke, eller noget??
Avatar billede exp-ralle Nybegynder
06. oktober 2002 - 15:05 #7
Hvorfor prøver du ikke bare om det virker?
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 15:08 #8
... det virker ikke...

strSQL = "SELECT COUNT(DISTINCT aar) FROM 18amonth"
response.write strSQL

...printer bare:
SELECT COUNT(DISTINCT aar) FROM 18amonth
Avatar billede eagleeye Praktikant
06. oktober 2002 - 16:35 #9
Alternativ

Set rs=Server.CreateObject("ADODB.Connection")
SQL = "SELECT DISTINCT ID FROM tabel"
rs.Open SQL, Conn, 1

Response.write rs.RecordCount
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 17:31 #10
eagleeye >>

når jeg bruger denne:

Set rs=Server.CreateObject("ADODB.Connection")
SQL = "SELECT DISTINCT aar FROM 18amonth"
rs.Open SQL, Conn, 1


...får jeg fejlen:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Datakildenavnet er for langt.
/musicchart/html/18amonth_test.asp, line 48
Avatar billede eagleeye Praktikant
06. oktober 2002 - 17:33 #11
Conn skal være din connection til databasen.
Avatar billede eagleeye Praktikant
06. oktober 2002 - 17:34 #12
Alternativt så prøv med denne SQL:

"SELECT Count(aar) AS CountAar From 18amonth Where aar in (Select distinct aar FROM 18amonth)"
Avatar billede eagleeye Praktikant
06. oktober 2002 - 17:36 #13
Det kan være der skal [] tabelnavnet da det starter med et tal [18amont]:

"SELECT Count(aar) AS CountAar From [18amonth] Where aar in (Select distinct aar FROM [18amonth])"
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 17:37 #14
hvordan får jeg så udskrevet sql'en??

response.write strSQL???
Avatar billede eagleeye Praktikant
06. oktober 2002 - 17:39 #15
Tænker du på:

strSQL = "SELECT Count(aar) AS CountAar From [18amonth] Where aar in (Select distinct aar FROM [18amonth])"

response.write strSQL
Avatar billede eagleeye Praktikant
06. oktober 2002 - 17:39 #16
for at udskrive antallet:

strSQL = "SELECT Count(aar) AS CountAar From [18amonth] Where aar in (Select distinct aar FROM [18amonth])"

Set rs = Din_connection.Execute(strSQL)
response.write rs("CountAar")
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 17:44 #17
... ok jeg får et tal... men den tæller alle mine RecordSet's, så jeg får tallet 83, istedet for tallet 2...
Der bliver åbentbart ikke udført en DISTINCT...?
Avatar billede eagleeye Praktikant
06. oktober 2002 - 17:45 #18
Hvordan ser koden ud, eller SQL sætningen?
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 17:46 #19
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../db/dbase.mdb") & "; UID=administrator; PWD=black"
Conn.Open DSN

strSQL = "SELECT Count(aar) AS CountAar From [18amonth] Where aar in (Select distinct aar FROM [18amonth])"

Set rs = Conn.Execute(strSQL)
response.write rs("CountAar")
Avatar billede eagleeye Praktikant
06. oktober 2002 - 17:47 #20
hvad men distinctrow

strSQL = "SELECT Count(aar) AS CountAar From [18amonth] Where aar in (Select distinctrow aar FROM [18amonth])"
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 17:48 #21
det er det samme
Avatar billede eagleeye Praktikant
06. oktober 2002 - 17:53 #22
ja ok det kan ikke den finder jo alle hvor ID er med....

virkede dene ikke?

SQL = "SELECT DISTINCT aar FROM [18amonth]"
rs.Open SQL, Conn, 1
Avatar billede eagleeye Praktikant
06. oktober 2002 - 17:55 #23
Eller så det:

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT DISTINCT aar FROM [18amonth]"
rs.Open strSQL, Conn, 3, 1
Response.write rs.RecordCount
Avatar billede musicchart.dk Nybegynder
06. oktober 2002 - 17:58 #24
fandme jo, om dette ikke virker:

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT DISTINCT aar FROM [18amonth]"
rs.Open strSQL, Conn, 3, 1
Response.write rs.RecordCount

...tusind tak << eagleeye >> - du er sq gud til sql-sætninger!!!
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