---
title: "Söka från två ställen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/156318-söka-från-två-ställen"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Lorelie"
published: "2007-01-22T20:51:04.000Z"
updated: "2007-01-28T20:35:27.000Z"
replies: 26
views: 718
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/databaser-sql/156318-söka-från-två-ställen"
---

# Söka från två ställen

_Sida 1 av 2._

## #1 — Lorelie, 2007-01-22T20:51Z

Jag har en databas där man kan söka efter stamboksnummer, eller rättare sagt få upp en lista i nummerordning. En del hästar är exporterade från det landet, och då kommer inte de upp i sitt gamla lands lista som därmed inte blir komplett. 
Har två olika stamboksnummer i databasen, den nya med tillhörande stamboksbetäckning (aktuell) och den gamla med dito (förra). 
Kan man få med de gamla i en lista på aktuella hästar? Alltså att man får upp en komplett lista i nummerordning, även om hästen i fråga har ett annat stamboksnummer nu, helst ska den hamna på platsen för det gamla nummret.

Såhär ser det ut när man får upp listan för "IRE" i nummerordning

```

SQL = "SELECT 	namn,			" & _
"hast_id,					" & _
"bild_url					" & _
"  FROM 		hast 			" & _
"WHERE 		kon = '"& SafeSQL(Request.Form("kon")) &"' 	  "& _
"AND 	namn  like  '" & SafeSQL(Request.Form("hast"))&"%' 	" & _
"AND	stamboks_nr is not null 				" & _
"AND 	namn	<>		'e'			" & _
"AND	namn	<>		'u'			" & _
"AND	namn    <>		'&nbsp;'			" & _
"AND	ras    <>		           'Övrig'			" & _
"AND 	ras	=		'IRE'			" & _
"	ORDER BY 	stamboks_nr			"
```

 

utlstbnr och utlstb heter kollumnerna jag vill ha med resp. få dem som inte hör till IRE numera ska sorteras efter. 
Dvs blanda nya och gamla nummer

Någon som hängde med i förklaringen  :OO   :q

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

## #2 — LarsG, 2007-01-22T21:44Z

Exemplifiera med datainnehåll och förväntat resultat.

Flyttas från ASP

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

## #3 — Peter S, 2007-01-22T22:12Z

Skriv gärna ut och formattera SQL:en också:

```
response.write SQL
```

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

## #4 — Lorelie, 2007-01-23T10:19Z

SELECT namn, hast_id, bild_url FROM hast WHERE kon = 'Hingst' AND namn like '%' AND stamboks_nr is not null AND namn \<\> 'e' AND namn \<\> 'u' AND namn \<\> ' ' AND ras \<\> 'Övrig' AND ras = 'IRE' ORDER BY stamboks_nr

Min första förklaring var visst väldigt luddig ser jag nu =S
Här kommer ett nytt försök till att beskriva vad jag vill:

Jag vill i första hand  ha det nya nummret (IRE), och har den ett gammalt IRE-nummer (står i en annan kollumn) ska den också vara med i IRE-listan. 
Vilken bok hästen tillhör står på ett ställe (tex nr 1 i stambok IRE), sen har den ev. ett gammalt nummer också (tex nr 2 i stambok IRE, då kanske den heter nr 10 i stambok Connemara) 

(exempel
Namn: Roundstone Chief
Stamboksnummer 1
Stambok Connemara
Utländska stamboksnummer 151
stambok IRE )

När man letar efter honom kommer han upp i den svenska nummerordningen (Connemara), men jag vill att han även ska hamna på platsen för 151 när man söker efter IRE-hästar

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

## #5 — Peter S, 2007-01-23T13:30Z

Det vore bättre om du kan ge exempel på tabellinnehåll

```
---------------------------------
hast_id | namn | bild_url   | ...
---------------------------------
   1    | åke  | [url]http://.[/url].. | ...
   2    | ann  | [url]http://.[/url].. | ...
...
```

Samt vilket resultat som förväntas

```
------------------------------------
namn  | utlstbnr | utlstb | ras |...
------------------------------------
ann   | ...
...
```

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

## #6 — Lorelie, 2007-01-23T13:59Z

```
-------------------------------------------------------------------
hast_id | namn                | stb_nr | ras*             | utlstbnr  | utlstb
------------------------------------------------------------------------
   3     | Roundstone Chief |1        |  Connemara | 151        | IRE
10068  | Win Lorenzo        | 142   | IRE            | NULL      | NULL
       
...
```

Såhär vill jag att resultatet ska bli:
Win Lorenzo IRE 142
Royal Chieftain IRE 143
Gay Lorenzo IRE 144
Mac Mawgan IRE 148
Glenarde IRE 149
Roundstone Chief RC 1 
Harvest Moon IRE 152
Moycullen Bobby IRE 154
Heather Legend IRE 156

Alla som har ett IRE-nummer har IRE i kolumnen ras, men Roundstone Chief har "Connemara" där, men IRE i utlstb. Dessutom vill jag enbart ha med "IRE" från utlstb (Det finns flera beteckningar)

\* Ras är fel, igentligen ska det stå stambok, men det är av ren lathet det inte är ändrat... jag vet ju vad jag menar ändå

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

## #7 — Peter S, 2007-01-23T14:23Z

Använder du Access?

```
select namn
     , ras
     , stb_nrl
  from hast
 where 'IRE'
    in (ras,utlstb)
   and kon = '" & SafeSQL(Request.Form("kon")) & "'
   and namn like '" & SafeSQL(Request.Form("hast")) & "%'
   and namn
not in ('e','u','&nbsp;')
order
    by iif(isnull(utlstbnr),stb_nrl,utlstbnr)
```

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

## #8 — Lorelie, 2007-01-23T17:48Z

> **Peter S skrev:**
>
> Använder du Access?

Nej, MySQL

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

## #9 — Lorelie, 2007-01-23T17:57Z

> **Peter S skrev:**
>
> Använder du Access?
>
>
> ```
> select namn
>      , ras
>      , stb_nrl
>   from hast
>  where 'IRE'
>     in (ras,utlstb)
>    and kon = '" & SafeSQL(Request.Form("kon")) & "'
>    and namn like '" & SafeSQL(Request.Form("hast")) & "%'
>    and namn
> not in ('e','u','&nbsp;')
> order
>     by iif(isnull(utlstbnr),stb_nrl,utlstbnr)
> ```

Provade att lägga in detta, och fick felmeddelandet "Expected Case" på rad 22, rad 22 är select namn

Sen visades 'IRE' som en komentar, så jag ändrade till ", det kanske man inte kan?

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

## #10 — Peter S, 2007-01-23T18:43Z

```
select namn
     , ras
     , stb_nrl
  from hast
 where 'IRE'
    in (ras,utlstb)
   and kon = '" & SafeSQL(Request.Form("kon")) & "'
   and namn like '" & SafeSQL(Request.Form("hast")) & "%'
   and namn
not in ('e','u','&nbsp;')
order
    by coalesce(utlstbnr,stb_nrl)
```

```
SQL = _
"select namn" &_ 
"     , ras" &_
"     , stb_nrl" &_
"  from hast" &_
" where 'IRE'" &_
"    in (ras,utlstb)" &_
"   and kon = '" & SafeSQL(Request.Form("kon")) & "'" &_
"   and namn like '" & SafeSQL(Request.Form("hast")) & "%'" &_
"   and namn" &_
"not in ('e','u','&nbsp;')" &_
"order" &_
"    by coalesce(utlstbnr,stb_nrl)" &_
```

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

## #11 — @nders, 2007-01-23T18:46Z

> Provade att lägga in detta, och fick felmeddelandet "Expected Case" på rad 22, rad 22 är select namn

Eftersom det är en SQL-fråga måste du göra som du brukar, lägga i en sträng. Du kan inte bara kasta in dessa rader i ASP-koden.

```
SQL = "select namn " & _
      "     , ras" & _
...
...
```

I övrigt fungerar inte iif() i MySQL, utan där använder du case istället. Så byt iif-uttrycket mot:

```
case when utlstbnr is null then stb_nrl else utlstbnr end
```

edit: eller coalesce som Peter skriver.

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

## #12 — Lorelie, 2007-01-23T19:33Z

> **Peter S skrev:**
>
> ```
> 
> SQL = _
> "select namn" &_ 
> "     , ras" &_
> "     , stamboks_nr" &_
> "	  , bild_url" & _
> "  from hast" &_
> " where 'IRE'" &_
> "    in (ras,utlstb)" &_
> "   and kon = '" & SafeSQL(Request.Form("kon")) & "'" &_
> "   and namn like '" & SafeSQL(Request.Form("hast")) & "%'" &_
> "   and namn" &_
> "not in ('e','u','&nbsp;')" &_
> "order" &_
> "    by coalesce(utlstbnr,stamboks_nr)" &_
> ```

Det blir felmeddelande "unexpected "new line"" på rad 36, det är efter att kodsnutten är slut, plockar jag bort &\_ (på de gamla koderna slutar det med ") så får jag ett annat meddelande (Unknown column 'namnnot' in 'where clause' på rs.Open SQL, MinCon, så det antar jag är helfel, satte tillbaka &\_ igen)

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

## #13 — Peter S, 2007-01-23T19:38Z

Nu så  :) 

```
SQL = _
"select namn" &_ 
"     , ras" &_
"     , stamboks_nr" &_
"	  , bild_url" & _
"  from hast" &_
" where 'IRE'" &_
"    in (ras,utlstb)" &_
"   and kon = '" & SafeSQL(Request.Form("kon")) & "'" &_
"   and namn like '" & SafeSQL(Request.Form("hast")) & "%'" &_
"   and namn " &_
"not in ('e','u','&nbsp;') " &_
"order" &_
"    by coalesce(utlstbnr,stamboks_nr)"
```

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

## #14 — Lorelie, 2007-01-23T19:49Z

> **Peter S skrev:**
>
> Nu så  :) 
>
> ```
> SQL = _
> "select namn" &_ 
> "     , ras" &_
> "     , stamboks_nr" &_
> "	  , bild_url" & _
> "  from hast" &_
> " where 'IRE'" &_
> "    in (ras,utlstb)" &_
> "   and kon = '" & SafeSQL(Request.Form("kon")) & "'" &_
> "   and namn like '" & SafeSQL(Request.Form("hast")) & "%'" &_
> "   and namn " &_
> "not in ('e','u','&nbsp;') " &_
> "order" &_
> "    by coalesce(utlstbnr,stamboks_nr)"
> ```

Det gick mycket bättre   :e 
Men sorteringen är lite skum 

Dynamite 
Kingstown Rory 
Coolfin Bobby 
Grey Fox of Ard IRE 
Cannon Ball IRE 1 
Bryan IRE 10 
Connemara Mick IRE 100 
Glowes Misty Owen IRE 1000 
Kylemore Rocky IRE 1001 

osv

Vill inte ha med dem utan nummer heller, 
"AND	stamboks_nr is not null  " & \_  stod det innan för att få bort dem, men det fungerade inte här

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

## #15 — Peter S, 2007-01-23T19:53Z

Att lägga till AND... borde inte vara några problem. Har du testat

```
SQL = _
"select namn" &_ 
"     , ras" &_
"     , stamboks_nr" &_
"	  , bild_url" & _
"  from hast" &_
" where 'IRE'" &_
"    in (ras,utlstb)" &_
"   and kon = '" & SafeSQL(Request.Form("kon")) & "'" &_
"   and namn like '" & SafeSQL(Request.Form("hast")) & "%'" &_
"   and namn " &_
"not in ('e','u','&nbsp;') " &_
"   and stamboks_nr is not null " &_
"order" &_
"    by coalesce(utlstbnr,stamboks_nr)"
```

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

## #16 — Lorelie, 2007-01-23T19:59Z

> **Peter S skrev:**
>
> Att lägga till AND... borde inte vara några problem. Har du testat
>
> ```
> SQL = _
> "select namn" &_ 
> "     , ras" &_
> "     , stamboks_nr" &_
> "	  , bild_url" & _
> "  from hast" &_
> " where 'IRE'" &_
> "    in (ras,utlstb)" &_
> "   and kon = '" & SafeSQL(Request.Form("kon")) & "'" &_
> "   and namn like '" & SafeSQL(Request.Form("hast")) & "%'" &_
> "   and namn " &_
> "not in ('e','u','&nbsp;') " &_
> "   and stamboks_nr is not null "
> "order" &_
> "    by coalesce(utlstbnr,stamboks_nr)"
> ```

Det var så jag gjorde "Expected Identifier"

Edit:  har ju missat &\_ på slutet där =) Nu fungerar det

Men hur får jag dem sorterade i nummerordning? Nu är de sorterade efter första siffran, dvs 1,10,100,1000, 1001 osv

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

## #17 — Peter S, 2007-01-23T20:16Z

Inlägget ovan redigerat: jag glömde *&\_*.

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

## #18 — Peter S, 2007-01-23T20:21Z

> **Lorelie skrev:**
>
> Men hur får jag dem sorterade i nummerordning? Nu är de sorterade efter första siffran, dvs 1,10,100,1000, 1001 osv

Är inte det i nummerordning?

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

## #19 — Lorelie, 2007-01-23T20:25Z

> **Peter S skrev:**
>
> Är inte det i nummerordning?

joo, men jag vill ha 1,2,3,4,5,6 osv, inte 1,10, 11, 12, 100, 101, 143, 1000, 1001, 2, 20, 26, 201 osv

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

## #20 — Peter S, 2007-01-23T20:36Z

Är stamboksnumren lagrade som strängar? Om dessa alltid är numeriska bör du ändra kolumndefinitionerna så att de lagras som tal.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/156318-söka-från-två-ställen  
Nästa sida: https://www.webforum.nu/amne/databaser-sql/156318-söka-från-två-ställen/page2.md
