---
title: "Select i order by"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/132906-select-i-order-by"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Addeladde"
published: "2005-08-17T15:21:24.000Z"
updated: "2005-08-25T22:05:00.000Z"
replies: 13
views: 421
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/132906-select-i-order-by"
---

# Select i order by

## #1 — Addeladde, 2005-08-17T15:21Z

Hej

Jag vill i en sql sats sortera på ett visst sätt om en speciell parameter är satt i en rad i databasen.

```
...order by (Select menuSortype from menu Where menuID = 5)
```

fältet menu sorting returnerar dock bara 1 eller 0. Om der är ett så ska det sorteras efter m.menuTitle annars efter m.menuSorting'

Kanske något liknande detta?

```
"ORDER BY IIf(((Select menuSortType from menu Where menuID = "& ID &") = 0), 'm.menuTitle', 'm.menuSorting')"
```

Förstår ni?

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

## #2 — LarsG, 2005-08-17T15:31Z

Jag förmodar att menutitle och menunumber har olika datatyp.

```
select ... 
case when (select  menuSorting 
from menu 
Where menuID = 5) = 0 then menuNumber end as mn,
case when (select  menuSorting 
from menu 
Where menuID = 5) = 1 then menuTitle end as mt
from t
order by mn,mt
```

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

## #3 — Addeladde, 2005-08-17T15:37Z

Han ändra lite i min kod innan du svarade.
Nu ser min kod ut på följande sätt men jag går odefinerat fel.

```
sqlString = "SELECT m.menuID, m.menuTitle, m.menuSorting, m.menuPublishStart, m.menuPublishEnd, m.menuShow " &_ 
  "FROM menu as m " &_
  "WHERE m.menuParentID = "& ID &" "&_
  "AND menuShow = 1 "&_
  "AND ((menuTimePublish = 1 " &_
  "AND m.menuPublishStart <= #"& now() &"# " &_
  "AND m.menuPublishEnd >= #"& now() &"# )" &_
  "Or menuTimepublish = 0) " &_
  "Case When (Select  menuSortType from menu Where menuID = "& ID &") = 0 Then m.menuNumber End As mn, " &_
  "Case When (Select  menuSortType from menu Where menuID = "& ID &") = 1 Then m.menuTitle End As mt " &_
  "from t " &_
  "order by mn,mt"
```

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

## #4 — LarsG, 2005-08-17T15:55Z

Och du använder Access som DBMS?

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

## #5 — Addeladde, 2005-08-17T15:55Z

Japp

Kanske något liknande detta:

```
  "Order By Case When (Select  m2.menuSortType from menu as m2 Where m2.menuID = "& ID &") = 0 Then m.menuNumber Else " &_
  "m.menuTitle End "
```

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

## #6 — LarsG, 2005-08-17T16:02Z

Case fungerar inte i Access och jag är ytterst tveksam till att den stöder subselect i order by

```
select ... 
iif((select  menuSorting 
from menu 
Where menuID = 5)=0,menuNumber,null),
iif((select  menuSorting 
from menu 
Where menuID = 5) = 1,menuTitle,null)
from t
order by 9,10
```

där 9 och 10 motsvarar de ordningsnummer som varje iif-uttryck har inom select-listan.

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

## #7 — Addeladde, 2005-08-17T16:09Z

Jag är helt lost måste jag säga.

```
sqlString = "SELECT m.menuID, m.menuTitle, m.menuSorting, m.menuPublishStart, m.menuPublishEnd, m.menuShow " &_ 
  "FROM menu as m " &_
  "WHERE m.menuParentID = "& ID &" "&_
  "AND menuShow = 1 "&_
  "AND ((menuTimePublish = 1 " &_
  "AND m.menuPublishStart <= #"& now() &"# " &_
  "AND m.menuPublishEnd >= #"& now() &"# )" &_
  "Or menuTimepublish = 0) " &_
  "iif((select menuSortType from menu Where menuID = "& ID &") = 0,m.menuSorting,null), " &_ 
  "iif((select menuSortType from menu Where menuID = "& ID &") = 1,m.menuTitle,null) " &_
  "from t " &_
  "order by 9,10"
```

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

## #8 — LarsG, 2005-08-17T20:29Z

Nej, du måste lägga iif-uttrycken i select-listan och då skulle dom få ordningsnummer 7 och 8

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

## #9 — Addeladde, 2005-08-17T20:31Z

Hur menar du då?

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

## #10 — LarsG, 2005-08-17T20:40Z

```
sqlString = "SELECT m.menuID, m.menuTitle, m.menuSorting, m.menuPublishStart, m.menuPublishEnd, m.menuShow, " &_ 
  "iif((select menuSortType from menu Where menuID = "& ID &") = 0,m.menuSorting,null), " &_ 
  "iif((select menuSortType from menu Where menuID = "& ID &") = 1,m.menuTitle,null) " &_
  "FROM menu as m " &_
  "WHERE m.menuParentID = "& ID &" "&_
  "AND menuShow = 1 "&_
  "AND ((menuTimePublish = 1 " &_
  "AND m.menuPublishStart <= #"& now() &"# " &_
  "AND m.menuPublishEnd >= #"& now() &"# )" &_
  "Or menuTimepublish = 0) " &_
  "order by 7,8"
```

Jag är osäker huruvida man kan ange null på det sätt som jag gjort i Access. Om du får fel så

```
sqlString = "SELECT m.menuID, m.menuTitle, m.menuSorting, m.menuPublishStart, m.menuPublishEnd, m.menuShow, " &_ 
  "iif((select menuSortType from menu Where menuID = "& ID &") = 0,m.menuSorting,0), " &_ 
  "iif((select menuSortType from menu Where menuID = "& ID &") = 1,m.menuTitle,'') " &_
  "FROM menu as m " &_
  "WHERE m.menuParentID = "& ID &" "&_
  "AND menuShow = 1 "&_
  "AND ((menuTimePublish = 1 " &_
  "AND m.menuPublishStart <= #"& now() &"# " &_
  "AND m.menuPublishEnd >= #"& now() &"# )" &_
  "Or menuTimepublish = 0) " &_
  "order by 7,8"
```

underförutsättning att menusorting är numeriskt och menutitle är character.

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

## #11 — Addeladde, 2005-08-17T20:49Z

Tack!

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

## #12 — Addeladde, 2005-08-25T20:56Z

Nu har jag upptäckt att det tyvär inte sorterar varken efter menuTitle eller menuSorting.

```
sqlString = "SELECT m.menuID, m.menuTitle, m.menuLink, m.menuSorting, m.menuPublishStart, m.menuPublishEnd, m.menuShow, " &_ 
  "iif((select menuSortType from menu Where menuID = "& ID &") = 1,m.menuSorting,null), " &_ 
  "iif((select menuSortType from menu Where menuID = "& ID &") = 0,m.menuTitle,null) " &_
  "FROM menu as m " &_
  "WHERE m.menuParentID = "& ID &" "&_
  "AND menuShow = 1 "&_
  "AND ((menuTimePublish = 1 " &_
  "AND m.menuPublishStart <= #"& now() &"# " &_
  "AND m.menuPublishEnd >= #"& now() &"# )" &_
  "Or menuTimepublish = 0) " &_
  "order by 7,8"
```

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

## #13 — LarsG, 2005-08-25T21:17Z

Om man räknar så borde det bli

```
order by 8,9
```

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

## #14 — Addeladde, 2005-08-25T22:05Z

Nu förstår jag hur man räknar

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/132906-select-i-order-by
