---
title: "Sortera och räkna"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/60381-sortera-och-räkna"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Inferis"
published: "2002-11-27T02:55:24.000Z"
updated: "2002-12-01T15:28:56.000Z"
replies: 37
views: 709
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/60381-sortera-och-räkna"
---

# Sortera och räkna

_Sida 1 av 2._

## #1 — Inferis, 2002-11-27T02:55Z

Jag har ingen kod och vet inte hur jag ska gå till väga.
Vet inte vad jag ska söka efter.

Jag vill följande;

Hämta data (nick) ur en Access 2000 db
Sortera dessa data och räkna hur många meddelanden vart har.

I *tabellen* **Senaste** finns *fälten* **ID, Nick, Meddelande** och även **datumet**

Alltså, i fältet Nick finns data som:

- Bertil
- Adam
- Bertil
- Adam
- Adam
- Adam
- Ceasar
- Bertil
- David

 

Samma data förekommer alltså väldigt ofta.

Jag vill att man ska kunna presentera alla olika nick som finns och bredvid var nick ska det stå hur många meddelanden som vart nick har skickat.

Så det blir så här:

- Bertil (3)
- Adam (4)
- Ceasar (1)
- David (1)

 

Allt detta vill jag kunna sortera efter ID, bokstav eller antal meddelanden. Det finns över 20.000 poster i databasen om det spelar någon roll.

Någon som vill hjälpa mig?

Permalänk: https://www.webforum.nu/p/60381

## #2 — Krug, 2002-11-27T03:57Z

Är kanske inte den bästa lösningen men den bör fungera..

```
<%
Set ConnObj=Server.CreateObject("ADODB.Connection")
ConnObj.Open "DBQ=c:\inetpub\scripts\din_DB.mdb;DRIVER=Microsoft Access Driver (*.mdb)"

SQL = "Select Distinct(Nick) from Senaste ORDER BY Nick ASC"
Set Rs = ConnObj.Execute(SQL)
Do Until Rs.EOF
	
	CountSQL = "Select Count(*) AS nCount from Senaste Where Nick = '"& Rs("Nick") &"'"
	Set Rs2 = ConnObj.Execute(CountSQL)
	Do Until Rs2.EOF
	
		Response.write Rs("Nick") & "(" & Rs2("nCount") & ")"
		
	Rs2.MoveNext
	Loop
	
Rs.MoveNext
Loop
ConnObj.Close
%>
```

Permalänk: https://www.webforum.nu/p/868026

## #3 — Eitraz, 2002-11-27T08:14Z

Du kan skriva det där med en öppning bara.
Såhär: (där Connect är ditt databasobjekt)

```
SQL = "SELECT Nick,Meddelande,datumet,COUNT(*) AS antal FROM Senaste GROUP BY Nick"
Set RS = Connect.Execute(SQL)
	Do Until RS.EOF
		Response.write RS("Nick") & "(" & RS("antal") & ")<br>"
	RS.MoveNext
	Loop
Set RS = Nothing
```

\-Eitraz

Permalänk: https://www.webforum.nu/p/868072

## #4 — Inferis, 2002-11-27T14:58Z

Tack!

Det första exemplet fungerade perfekt!

Det andra exemplet gav följande felmeddelande:

```
Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'Meddelande' as part of an aggregate function
```

Permalänk: https://www.webforum.nu/p/868325

## #5 — Inferis, 2002-11-27T15:05Z

Det är just det där med **Distinct**.. Vad gör det egentligen?
Det sorterar bort dubletter eller?

Vissa poster förekommer två gånger ändå iofs..

Permalänk: https://www.webforum.nu/p/868328

## #6 — Eitraz, 2002-11-27T15:08Z

Verkar inte som du har nåt fält som heter Meddelande kanske?

Enda som behövs i mitt uttryck är väll igentligen
**Nick,COUNT(\*) AS antal**

\-Eitraz

Permalänk: https://www.webforum.nu/p/868332

## #7 — Inferis, 2002-11-27T15:08Z

Problem igen... :-(

Om jag försöker med:

```
SQL = "Select Distinct(Nick) from Senaste ORDER BY ID ASC"
```

Så får jag felmeddelande:

*\[Microsoft\]\[ODBC Microsoft Access Driver\] ORDER BY clause (id) conflicts with DISTINCT.*

Permalänk: https://www.webforum.nu/p/868333

## #8 — Inferis, 2002-11-27T15:10Z

Eitraz:
Fältet Meddelande finns.

Hur kan man sortera detta efter Id, Nick och datum?
Har även ett fält som heter Datumet.

Permalänk: https://www.webforum.nu/p/868334

## #9 — Eitraz, 2002-11-27T15:12Z

**SQL = "Select Distinct(Nick),ID from Senaste ORDER BY ID ASC"**
måste det väll bli isåfall?

\-Eitraz

Permalänk: https://www.webforum.nu/p/868337

## #10 — Inferis, 2002-11-27T15:14Z

Blir väldigt konstiga resultat av det där. Samma data kommer flera gånger i rad. Plus att sidan blir otroligt trögladdad.

Permalänk: https://www.webforum.nu/p/868338

## #11 — Eitraz, 2002-11-27T15:14Z

på min:
**SQL = "SELECT ID,Nick,COUNT(\*) AS antal FROM Senaste GROUP BY nick ORDER BY ID"**

Men jag förstår inte varför du ska ordna efter ID när det är olika för samma namn.. eller?

\-Eitraz

Permalänk: https://www.webforum.nu/p/868339

## #12 — LarsG, 2002-11-27T15:18Z

```
SQL = "SELECT Nick,COUNT(*) AS antal FROM Senaste GROUP BY Nick"
```

Om man använder group by så måste alla kolumner i select-listan ingå antingen i en aggregatfunktion eller finnas med i group by. Det har alla dbms-tillverkare utom Mysql förstått.

Distinct är ingen funktion. Den appliceras alltid på alla kolumner i resultatet.

Du kan sortera efter namn 

```
SQL = "SELECT Nick,COUNT(*) AS antal FROM Senaste GROUP BY Nick order by nick"
```

eller antal

```
SQL = "SELECT Nick,COUNT(*) AS antal FROM Senaste GROUP BY 2 desc"
```

Permalänk: https://www.webforum.nu/p/868341

## #13 — Inferis, 2002-11-27T15:18Z

Jag vill ju ordna så att den som senast gjorde en post kommer överst i listan.

Medans någon som kanske inte postat på två månader hamnar längst ner.

Permalänk: https://www.webforum.nu/p/868342

## #14 — LarsG, 2002-11-27T15:23Z

Sortera efter sista postning

```
SQL = "SELECT Nick,COUNT(*),max(datePosted) AS antal FROM Senaste GROUP BY Nick order by 3 desc"
```

Permalänk: https://www.webforum.nu/p/868346

## #15 — Inferis, 2002-11-27T15:29Z

LarsG:
Funkade kanon!
Men då försvann räkningen av Meddelande.. :-(

Datumfältet heter Datumet. Ändrade datePosted till det.

Permalänk: https://www.webforum.nu/p/868350

## #16 — Eitraz, 2002-11-27T15:30Z

**AS antal**
ska ligga efter **COUNT(\*)**

\-Eitraz

Permalänk: https://www.webforum.nu/p/868352

## #17 — Inferis, 2002-11-27T15:32Z

Nu börjar jag känna mig riktigt besvärlig.. :-)

Permalänk: https://www.webforum.nu/p/868354

## #18 — Eitraz, 2002-11-27T15:32Z

men du har fått ordning på det nu va? ;)

\-Eitraz

Permalänk: https://www.webforum.nu/p/868355

## #19 — Inferis, 2002-11-27T15:34Z

LarsG:
Vad är det som händer vid **order by 3 desc**?

Och sortera efter antal på **order by 2 desc**?

Hur vet den vad som ska sorteras där egentligen?

Permalänk: https://www.webforum.nu/p/868356

## #20 — Eitraz, 2002-11-27T15:36Z

```
Nick,COUNT(*),max(datePosted)
 (1)   (2)          (3)
```

:D

\-Eitraz

Permalänk: https://www.webforum.nu/p/868357

---

Tråden på webben: https://www.webforum.nu/amne/asp/60381-sortera-och-räkna  
Nästa sida: https://www.webforum.nu/amne/asp/60381-sortera-och-räkna/page2.md
