webForumDet fria alternativet

Räkna unika värden i tabell?

Databaser & SQL

10 svar · 1 324 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Frågan#1

Om jag i en loop vill räkna hur många poster av varje unikt värde (tex. antal 5:or, antal 1:or osv.) det finns i tabell, hur ska jag göra då? Loopen ska hålla reda på när ett nytt värde som inte räknats förr dyker upp. Sedan ska man kunne presentera för varje värde hur många poster det finns i. Någon?

Medlem sedan dec. 1999707 inlägg
#2

Det beror lite på hur många unika värden du har och hur datat är lagrat i databasen. Lättast är väl kanske att skriva en stored procedure (om SQL Server) som returnerar det. En annan enkel lösning är att fixa det med Recordset:et:

Response.Write "Unika värden<br />"
For i = 1 to 5
    rs.Filter = "nummer = " & i
    Response.Write i & ": " & rs.RecordCount & "<br />"
Next
rs.Filter = ""

Där nummer är namn på fältet.

Medlem sedan dec. 19996 721 inlägg
#3

Det gör du bäst direkt i SQL-satsen

Om kolumnen med värdet heter "bapp" så....

SELECT Bapp,COUNT(*) As Antal FROM Tabellen GROUP BY Bapp

Medlem sedan dec. 200012 464 inlägg
#4
select count(c), c from t group by c

Tråden flyttas till SQL-forumet

Medlem sedan maj 2002821 inlägg
#5

Får inget av ovan att fungera :( Tohas exempel funkar inte för det är inte siffror jag vill räkna då detta bara var ett exempel (skulle nog ha beskrivit det annorlunda...). De andra exemplen resulterar i ett felmeddelande:

"Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] SELECT-uttrycket innehåller ett reserverat ord eller argument som antingen är felstavat eller utelämnat, eller så är skiljetecknen felaktigt använda."

I tabellen har jag cirka 90 namn på olika städer. Vissa städer förekommer fler än en gång, och jag vill alltså räkna hur många OLIKA stadsnamn det finns. Inte hur många av varje stadsnamn det finns.

Medlem sedan dec. 200012 464 inlägg
#6

Hur ser ditt select-uttryck ut?

Medlem sedan juli 2002145 inlägg
#7

Antal unika värden i kolumnen får du så här:

select count(distinct(stadsnamn)) 
from stadstabell
Medlem sedan juni 200032 967 inlägg
#8

Och för att fortsätta på agneta_rungs inlägg så vill jag minnas att en sådan SQL-fråga inte fungerar i Access. Då får man göra så här i stället:

SELECT COUNT(*) FROM (SELECT DISTINCT(stadsnamn) FROM stadstabell)

Mvh,

Medlem sedan maj 2002821 inlägg
#9

@nders, hur lägger jag in det värdet (antal olika städer) jag får från din kod, i en variabel som jag sedan kan skriva ut på valfri sida?

Medlem sedan juni 200032 967 inlägg
#10

Typ:

strSQL = "SELECT COUNT(*) FROM (SELECT DISTINCT(stadsnamn) FROM stadstabell)"
set objRS = objConn.Execute(strSQL)
lngAntal = Clng(objRS(0))

Mvh,

Medlem sedan maj 2002821 inlägg
#11

Tackar och bockar det ödmjukaste :)

565 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
424 ms — hämta tråd, inlägg och bilagor (db)
137 ms — ändringar (db)