---
title: "sortering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/21632-sortering"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Wiberg"
published: "2001-09-29T12:51:00.000Z"
updated: "2001-09-29T14:45:00.000Z"
replies: 12
views: 151
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/21632-sortering"
---

# sortering

## #1 — Wiberg, 2001-09-29T12:51Z

Jag har en sida där besökarna kan betygsätta olika saker från 1 till 10 och sen ska allt listas med det som har högst betyg först.

Som det är nu så sparas summan av alla röster i ett fält och antalet röster i ett annat. Sen får jag fram snittbetyget genom att dividera summan med antalet röster.

Men hur gör jag för att sedan kunna skriva ut allt med hänsyn till detta?

ORDER by... alltså. :q

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

## #2 — LarsG, 2001-09-29T12:56Z

```
select sumpoints,voters,(sumpoints+0.0)/(votes + 0.0) as average from t
order by 3 desc
```

red: sql-forumet alltså

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

## #3 — Wiberg, 2001-09-29T13:24Z

Ja, det blev visst fel forum...

```
 SQL = "select titel, url, röster_antal, röster_summa, tid,(röster_summa+0.0)/(röster_antal + 0.0) as average from länkar order by 3 desc"
```

> Item cannot be found in the collection corresponding to the requested name or ordinal

:q

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

## #4 — LarsG, 2001-09-29T13:35Z

Order by 3 innebär att man sorterar på 3:e kolumnen i selectlistan. I ditt fall så borde det alltså bli 

```
order by 5
```

Felet som du får beror på att du anger ett namn som inte finns i ett recordset. För att t.ex. få ut snittet så skriver du

```
rs("average")
```

Lite svårt att säga exakt vad som är fel utan att se koden runtomkring.

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

## #5 — Wiberg, 2001-09-29T13:54Z

Borde det inte bli order by 6 då? 5:an är ju tiden när länken lades in. Jag vill använda värdet jag får i divisionen till att använda som order by...

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

## #6 — LarsG, 2001-09-29T13:56Z

Det stämmer, jag räknade fel där. Hur gick det med det andra då.

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

## #7 — Wiberg, 2001-09-29T13:59Z

> \[Microsoft\]\[ODBC Microsoft Access Driver\]Numeric value out of range (null)

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

## #8 — LarsG, 2001-09-29T14:15Z

Ok, du har alltså poster där röster_summa och/eller röster_antal inte är definerat.

Det kanske är bäst att välja bort dessa rader helt och hållet från resultatet

```
SQL = "select titel, url, röster_antal, röster_summa, tid,(röster_summa+0.0)/(röster_antal + 0.0) as average from länkar where röster_summa is not null and röster_antal is not null and röster_antal > 0 order by 6 desc"
```

Jag lade även till ett villkor så att man inte får poster med 0 röster vilket annars skulle ge upphov till division med noll.

red: sex skulle det vara

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

## #9 — Wiberg, 2001-09-29T14:21Z

> Item cannot be found in the collection corresponding to the requested name or ordinal.

Begriper inte vad som är fel. Det verkar ju stämma...

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

## #10 — Wiberg, 2001-09-29T14:24Z

Sorry. Det felmeddelandet berodde på att försökte hämta rs("id") fast det inte var med i SQL-uttrycket. :)

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

## #11 — Wiberg, 2001-09-29T14:27Z

Men det blir fortfarande inte riktigt rätt. :l

Jag vill ju till att börja med att även de som inte har blivit betygsatta än också ska skrivas ut fast då alltså komma sist på listan.

Order by blir för övrigt helt fel. Först kommer en med snittbetyget 4 som sedan följs av 1, 1, 7 etc...

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

## #12 — LarsG, 2001-09-29T14:41Z

Okej, jag ser att du har Access så då går det att använda några specifika Access-funktioner

```
SQL = "select titel, url, röster_antal, röster_summa, tid,iif(röster_summa is null or röster_antal is null or röster_antal = 0,cdbl(0.0),cdbl(röster_summa)/cdbl(röster_antal)) as average
from länkar order by 6 desc"
```

Tanken är att de sidor som inte har några röster får snittet 0 och dessa borde då hamna sist i sorteringsordningen.

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

## #13 — Wiberg, 2001-09-29T14:45Z

Nu funkar det perfekt så det är väl bara att tacka och buga för din effektiva support! :D

Det här med sorteringen funkar visst innan också. Problemet var att när jag la till id i SQL-uttrycket så glömde jag ändra 6 till 7. :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/21632-sortering
