---
title: "Access 2003: Hämta 10 posterna med högst betyg"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/140495-access-2003-hämta-10-posterna-med-högst-betyg"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Mattias Nordin"
published: "2006-01-07T17:32:33.000Z"
updated: "2006-03-19T10:50:06.000Z"
replies: 14
views: 567
page: 1
pages: 1
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/databaser-sql/140495-access-2003-hämta-10-posterna-med-högst-betyg"
---

# Access 2003: Hämta 10 posterna med högst betyg

## #1 — Mattias Nordin, 2006-01-07T17:32Z

Hej.

Skulle behöva få hjälp med en sql fråga som tar ut TOP 10 med högst snittbetyg från min databas

I tabellen sparar jag antalet rösttillfällen och det totala resultatet. Så här visar jag resultatet. 

```
varVoteResult = varVoteTotal / varVoteTimes	
<%=left(varVoteResult,3)%> (<%=varVoteTimes%> votes) &nbsp;
<% for i = 1 to varVoteResult %>
<img src="ico_plus.gif" align="absmiddle">
<% next %>
```

Vill alltså få ut ett recordset med de tio bästa.

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

## #2 — Peter S, 2006-01-07T17:38Z

Hej!

Följ gärna @nders [guide](http://www.webforum.nu/showthread.php?t=135903)  (y)

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

## #3 — Mattias Nordin, 2006-01-07T22:52Z

Hmmm... förstår inte vad du menar.

Har inte någon aning om hur syntaxen för något sådant ska se ut men jag antar att det går att göra. Tänker mig något enligt nedan.

```
sql = "SELECT TOP 10 * FROM T_mediainfo "
sql = sql &" LEFT JOIN T_movie_poster ON T_mediainfo.id = T_movie_poster.movie_id"
sql = sql &" WHERE visa_lank = true ORDER BY [b](vote_total / vote_times)[/b] DESC, T_mediainfo.id"
```

> Microsoft JET Database Engine error '80040e57' 
> 
> Overflow

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

## #4 — Peter S, 2006-01-08T13:29Z

Så här menar jag (exempel):

**DBMS**
MS Access 2000

**Tabellstruktur/-innehåll**
*Tabell_1*

```
[B]  pnr (char(10), PK)  |  namn (varchar(50))  |  ort (varchar(30))[/B]
-----------------------------------------------------------------
  4605013490          |  per persson         |  byn
-----------------------------------------------------------------
  7011165622          |  lisa karlsson       |  staden
-----------------------------------------------------------------
```

*Tabell_2*

```
[B]  pnr (char(10), PK, FK Tabell_1.pnr)  |  hobby (varchar(50), PK))[/B]
------------------------------------------------------------------
  4605013490                           |  fotboll
------------------------------------------------------------------
  4605013490                           |  knyppling
------------------------------------------------------------------
  7011165622                           |  statistik
------------------------------------------------------------------
```

**Önskat resultat**

```
  pnr         |  namn           |  antal_hobbys
-----------------------------------------------
  4605013490  |  per persson    |  2
-----------------------------------------------
  7011165622  |  lisa karlsson  |  1
-----------------------------------------------
```

**Testad SQL-fråga och resultat**
*SQL-fråga*

```
select t1.pnr
     , t1.namn
     , count(*) as antal_hobbys
  from Tabell_1 t1
 left
  join Tabell_2 t2
    on t1.pnr = t2.pnr
group
    by t1.pnr
```

*Resultat*

```
Du försökte köra en fråga med en mängdfunktion som inte innehöll det angivna uttrycket 'namn'.
```

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

## #5 — Mattias Nordin, 2006-03-05T17:41Z

Hade glömt bort detta men nu är det dags att åter ta ett litet krafttag.

Går det att göra lite division direkt i en sql fråga?

Det jag vill åstakomma är: 

vote_total / vote_times AS voteResult

och sortera hela mitt recordset på voteResult.

> **tabellen skrev:**
>
> T_media
> \------------------------------
> id \| vote_total \| vote_times

> **Önskat resultat skrev:**
>
> 3,12
> 3,00
> 2,8
> 1

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

## #6 — Mattias Nordin, 2006-03-14T19:06Z

Ingen sql guru här ?

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

## #7 — @nders, 2006-03-14T19:08Z

select votetotal / vote_times as voteresult
order by 1 desc

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

## #8 — Mattias Nordin, 2006-03-14T19:57Z

Hej Anders! :)
Det var ungefär så jag hoppades att man skulle kunna göra.

Min sqlfråga ser numer ut så här:

```
sql = "SELECT TOP 10 *, vote_total / vote_times as voteresult FROM T_mediainfo "
	sql = sql &" LEFT JOIN T_movie_poster ON T_mediainfo.id = T_movie_poster.movie_id"
	sql = sql &" WHERE visa_lank = true AND NOT vote_total is null ORDER BY voteresult desc, T_mediainfo.id"
```

Och ger följande fel

> Microsoft JET Database Engine error '80040e10' 
> 
> No value given for one or more required parameters.

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

## #9 — Mattias Nordin, 2006-03-14T20:11Z

Hmm...

kör jag bara

```
SELECT vote_total / vote_times as voteresult FROM T_mediainfo ORDER BY 1 DESC
```

så får jag...

> Microsoft JET Database Engine error '80040e57' 
> 
> Overflow

Tydligen så är både vote_total och cote_times null i vissa fält. Hur testar jag det?

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

## #10 — @nders, 2006-03-14T20:15Z

Vad är det för datatyper på fälten?\`

Ang. felmeddelandet i ditt näst sista inlägg: du kan inte ange namnet på ett skapat fält i order by, utan du måste ange dess ordningsnummer, som jag gjorde i mitt exempel.

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

## #11 — Mattias Nordin, 2006-03-14T20:19Z

hmmm... datatypen på båda fälten är numeriska.

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

## #12 — Mattias Nordin, 2006-03-19T10:21Z

```
SELECT *, vote_total / vote_times as voteresult FROM T_mediainfo ORDER BY 1 DESC
```

Hur gör man för att exkludera att göra en division på de fält som är null ?

Var kan man läsa mer om vilka kommandon som är giltiga i en sql fråga? Antar att man inte kan köra vb-script rakt av.

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

## #13 — @nders, 2006-03-19T10:27Z

> Hur gör man för att exkludera att göra en division på de fält som är null ?

```
... WHERE fält IS NOT NULL
```

> Var kan man läsa mer om vilka kommandon som är giltiga i en sql fråga?

Till exempel hos [devguru](http://www.devguru.com/technologies/jetsql/home.asp).

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

## #14 — Mattias Nordin, 2006-03-19T10:41Z

Hej Anders :)

Jag vill returnera alla rader. 
De rader som var_total och vote_times båda är något annat annat än null så ska även "vote_total / vote_times as voteresult" köras 

Typ:
SELECT \*, **if not vote_total is null and not vote_times is null then vote_total / vote_times as voteresult end if** FROM T_mediainfo ORDER BY 1 DESC

hmmm...

Nu är jag ju erkännt dum igen. Visst går det utmärkt att lägga på where... då jag bara vill ha ut top 10.   :r

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

## #15 — Mattias Nordin, 2006-03-19T10:50Z

Nähä...

Det vara inte alla nullfält som ställer till det för mig.

Nu kör jag:

```
sql = "SELECT vote_total / vote_times as voteresult FROM T_mediainfo
 WHERE vote_total IS NOT NULL AND vote_times IS NOT NULL 
ORDER BY 1"
```

Och så fort jag lägger på **ORDER BY 1** så får jag:

> Microsoft JET Database Engine error '80040e57' 
> 
> Overflow

RED...

Ändrade till:

 **WHERE vote_total \> 0 AND vote_times \> 0** 

och det fungerar nu. Tack för assistansen alla. Frustrerande när man fastnar på bagateller pga sin okunskap. Tjing!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/140495-access-2003-hämta-10-posterna-med-högst-betyg
