Avatar billede jsc Nybegynder
21. april 2003 - 15:30 Der er 34 kommentarer og
1 løsning

tælle antal FORSKELLIGE poster i database

ja.. som titlen siger, hvordan tæller jeg antal forskellige poster i en kolonne i en database?

/jsc
Avatar billede erikjacobsen Ekspert
21. april 2003 - 15:31 #1
select count(distinct feltnavn) as antal from dintabel
Avatar billede jsc Nybegynder
21. april 2003 - 15:41 #2
den holder vist ikke helt:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'count(distinct navn)'.
Avatar billede erikjacobsen Ekspert
21. april 2003 - 15:45 #3
Nåh, Access med den gamle driver. Det virker i MySql og måske med
den nye Jet driver til Access
Avatar billede jsc Nybegynder
21. april 2003 - 15:47 #4
findes der så en anden SQL-sætning, som der gør det samme?

kan jeg finde denne "Jet driver" et sted?
Avatar billede virus Nybegynder
21. april 2003 - 16:21 #5
jsc > Som erikjacobsen siger kan du bruge JET driverne

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=" & Server.Mappath("db.mdb")

Set RS = Conn.Execute("SELECT COUNT(DISTINCT kolonnenavn) FROM tabel")
Response.Write RS(0)
%>
Avatar billede jsc Nybegynder
21. april 2003 - 16:26 #6
nu gav det mening.. jeg fattede ikke det der med driverne, men desværre - det virker ikke - samme fejl!

/jsc
Avatar billede erikjacobsen Ekspert
21. april 2003 - 16:30 #7
Hvad skriver du?
Avatar billede jsc Nybegynder
21. april 2003 - 16:31 #8
jeg skriver at det giver samme fejl som før!! :(
Avatar billede erikjacobsen Ekspert
21. april 2003 - 16:33 #9
Din sql-sætning?
Avatar billede jsc Nybegynder
21. april 2003 - 16:36 #10
SELECT COUNT(DISTINCT navn) FROM traffic <--- sådan som du og virus skrev
Avatar billede erikjacobsen Ekspert
21. april 2003 - 16:41 #11
Fair nok - har lige testet. count(distinct ..) virker heller
ikke med ovenfor anførte jet driver.
Avatar billede jsc Nybegynder
21. april 2003 - 16:42 #12
jamen så er det jo ikke fedt :) - endnu!

Hvad gør man så??
Avatar billede virus Nybegynder
21. april 2003 - 16:45 #13
Vi laver din SQL sætning lidt om :)
Prøv : SELECT DISTINCT COUNT(navn) FROM traffic
Avatar billede virus Nybegynder
21. april 2003 - 16:46 #14
Jeg har desværre ikke Access, men mon ikke DEN ^^ virker
Avatar billede jsc Nybegynder
21. april 2003 - 16:49 #15
den har jeg prøvet.. den virker desværre heller ikke helt - den skriver antal poster. :(
Avatar billede virus Nybegynder
21. april 2003 - 16:50 #16
Ja? :)
Avatar billede jsc Nybegynder
21. april 2003 - 16:53 #17
nej..den skriver det totale antal poster.. den skal skrive antal forskellige poster!! - jeg har en kolonne med flere af posterne, som er de samme, så hvis der er en post der er flere af - så skal den kun tælle den en gang!!
Avatar billede virus Nybegynder
21. april 2003 - 16:55 #18
Og den kolonne hvor der er flere ens poster hedder 'navn' ?
Avatar billede jsc Nybegynder
21. april 2003 - 16:56 #19
ja..
Avatar billede virus Nybegynder
21. april 2003 - 16:59 #20
Yups kan se det er min fejl, lad mig lige pryde min hjerne så du ikke ender i et loop...
Avatar billede jsc Nybegynder
21. april 2003 - 17:00 #21
hehe.. tag dig nu god tid :D
Avatar billede jsc Nybegynder
21. april 2003 - 22:37 #22
det ser ud til at være rigtig.. jeg fandt flere sider der siger det samme.(http://www.w3schools.com/sql/sql_count.asp)
Men fejlen kommer nok også fordi min indhold i posterne er med . imellem navnene - så jeg god tager jeres svar.. hvis I altså gider svare...

/jsc
Avatar billede erikjacobsen Ekspert
21. april 2003 - 23:09 #23
Det er en uelegant løsning, men du kan

  select distinct feltnavn from dintabel

og så aflæse antal rækket i dit recordset (rs.numberofrows ... eller sådan
noget - husker det ikke). Men det giver da tallet.

(ingen point til mig, tak)
Avatar billede mmt Nybegynder
22. april 2003 - 12:48 #24
umiddelbart vil jeg skyde på at dette er det du står og mangler.

SELECT COUNT(*) FROM traffic group by navn
Avatar billede jsc Nybegynder
22. april 2003 - 15:04 #25
mmt -> ja.. det ser bedre ud.., men er du sikker på at KUN er kolonnen "navn" den tæller.. det ser nemlig ud til at tælle lidt for mange. Jeg har cirka 15 forskellige navne i kolonnens 1000 poster - og nu siger den at der er 63..

/jsc
Avatar billede erikjacobsen Ekspert
22. april 2003 - 15:09 #26
Den giver ikke det rigtige. Der bliver mange rækker og hver indeholder
antal gange det pågældende navn forekommer (du har et navn, der er 63 gange)

Til gengæld har du 15 rækker. Så kan du ligesågodt gøre som jeg foreslog...
Avatar billede jsc Nybegynder
22. april 2003 - 15:14 #27
ja.. det kunne jeg da.. men det er svært når man ikke kender den helt rigtige betegnelse til "rs.numberofrows ... " <--- ellers ville jeg da meget gerne bruge det..

/jsc
Avatar billede jsc Nybegynder
22. april 2003 - 15:22 #28
jeg fandt en kommando: rs.RecordCount er det mon den der skal bruges? - jeg prøver ihvertfald!
Avatar billede dynajok Nybegynder
22. april 2003 - 16:26 #29
Hejsa jsc

Jeg synes ikke du skal bruge rs.RecordCount. Den kræver nemlig at man åbner en mere ressource-krævende connection.
Du kan bruge dette SQL script:
SELECT COUNT(Navn) FROM (select distinct Navn
FROM Traffic) A
Det sidste A er blot et alias, og jeg ved ikke helt om det er påkrævet.
Du kan også bruge GROUP BY i din subquery i stedet for en DISTINCT såsom:
SELECT COUNT(Navn) FROM (select Navn
FROM Traffic GROUP BY Navn) A
Men det primære er at du først for genereret en temporær tabel med de unikke navne og derefter lavet en count på dem. (Ja, det er altså det ovennævnte SQL Scripts gør ;-) )
Avatar billede rosted Nybegynder
22. april 2003 - 16:31 #30
SELECT COUNT(Navn) FROM Tabel GROUP BY Navn
Avatar billede jsc Nybegynder
22. april 2003 - 16:34 #31
dynajok -> SÅDAN!! - sådan skal det være.. :) Ja det var den rigtige måde.. Jeg brugte ikke dit "A" så sætningen hedder altså bare: "SELECT COUNT(Navn) FROM (select distinct Navn FROM Traffic)"

Jeg vil sige tak til alle som har bidraget til spm'et - men jeg bliver jo nok nødtil at give dynajok pointene, da han svarede helt korrekt.

/jsc
Avatar billede dynajok Nybegynder
22. april 2003 - 16:39 #32
Ok, enten forstår jeg ikke spørgsmålet eller svare alle forkert.
Hvis du vil have et resultat som viser antal af forskellige navne i database såsom:
navn
50

Eller vil du have et resultat der viser hvor mange der finde af hvert unikt navn, såsom:
navn    antal
peter  10
Anne    2
Svend  1
john    2

Hvis det første er tilfældet så virket mit tidligere svar.
Hvis det  sidste er tilfældet så brug "rosted"'s svar (hvis du skal have navnet med så "select navn, count(navn) as antal from....."
Avatar billede dynajok Nybegynder
22. april 2003 - 16:40 #33
Holdaop der var mange stavefejl der hva' :-D
Det er ved at være fyraften..
Avatar billede jsc Nybegynder
22. april 2003 - 16:42 #34
hmm, nu forstår jeg dig ikke helt..

jeg har bare en kolonne:

navn
Anne
Peter
Svend
Thomas

vis: 4

og din SQL-sætning virker til det..
Avatar billede dynajok Nybegynder
23. april 2003 - 08:24 #35
Sorry jeg så ikke du havde sagt go for løsningen.
Ja, min løsninge giver det ønskede resultat (altså "4") ved dit eksempel. Også selvom der var 3 thomas'er og 2 Peter i din tabel. Da den tæller antalet af unikke navne.
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