---
title: "Sql sats för sök-fråga."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/116078-sql-sats-för-sök-fråga"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "ConnyFox"
published: "2004-11-17T08:23:38.000Z"
updated: "2004-11-23T13:06:12.000Z"
replies: 11
views: 428
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/116078-sql-sats-för-sök-fråga"
---

# Sql sats för sök-fråga.

## #1 — ConnyFox, 2004-11-17T08:23Z

jag har ett sökfält där man skriver in ett eller flera ord man vill söka efter, när man bara skriver in ett ord (t.ex volvo) är ju det hela enkelt : 

```
MySQL = "select * from produkter where artikel LIKE ? ORDER BY '" & order & "'"
```

Men om man skriver in två ord, t.ex AMD Athlon så visas ju bara produkter som innehåller just detta, skriver man det i omvänt ordning, t.ex Athlon AMD så visas inte dessa och tvärt om, eller när orden man skriver in inte ligger brevid varandra så fungerar det inte heller.

Hur gör jag?

Tack på förhand!

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

## #2 — Jesper T, 2004-11-17T08:37Z

Du får göra ett script som loopar igenom alla sökord som skapar sql-satsen.

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

## #3 — ConnyFox, 2004-11-17T08:39Z

hmm hur då, finns det något exempel i någon tidigare tråd kanske?

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

## #4 — Palle, 2004-11-17T08:49Z

En variant som jag använde för länge sen, kan säkerligen
optimeras med det borde fungera för dig. :) 

```
[red]strFieldName = "artikel"
strQuery = Replace(trim(Request.Form("foo")), "'", "''")

If InStr(strQuery, " ") Then
	arrQuery = Split(strQuery, " ")
	If IsArray(arrQuery) Then
		For i = 0 To UBound(arrQuery)
			strNewQuery = strNewQuery &" LIKE '%"& arrQuery(i) &"%' OR "& strFieldName
		Next
		strNewQuery = Left(strNewQuery, Len(strNewQuery)-(Len(strFieldName)+4))
	End If
Else
	strNewQuery = " LIKE '%"& strQuery &"%'"
End If

...

MySQL = "select * from produkter where "& strFieldName & strNewQuery &" ORDER BY '" & order & "'"[/red]
```

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

## #5 — ConnyFox, 2004-11-17T23:03Z

skall testa den, tackar!

jag bara bytte ut OR mot AND så fungerade det

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

## #6 — ConnyFox, 2004-11-18T01:37Z

Ok en fråga till!
hur gör jag om jag vill att den skall göra detta fast kolla i två tabellfält - artikel och beskrivning
?

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

## #7 — ConnyFox, 2004-11-21T17:35Z

ingen som kan? :(

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

## #8 — ConnyFox, 2004-11-21T19:26Z

jag modifierade min kod lite så den ser ut såhär

```

strFieldName = "artikel"
strFieldName2 = "description"
strQuery = Replace(trim(Request("strSok")), "'", "''")

If InStr(strQuery, " ") Then
	arrQuery = Split(strQuery, " ")
	If IsArray(arrQuery) Then
		For i = 0 To UBound(arrQuery)
			strNewQuery = strNewQuery &" LIKE '%"& arrQuery(i) &"%' OR " & strFieldname2  &" LIKE '%"& arrQuery(i) &"%' AND "& strFieldName & ""
		Next
		strNewQuery = Left(strNewQuery, Len(strNewQuery)-(Len(strFieldName)+4))
	End If
Else
	strNewQuery = " LIKE '%"& strQuery &"%' OR " & strFieldname2  &" LIKE '%"& strQuery &"%'"
End If

MySQL = "select ID, artikel, artikelid, pris, lager from produkter where "& strFieldName & strNewQuery &" ORDER BY '" & order & "'"
set rs = connect.execute(mysql)
```

vilket ger mig en sql fråga som ser ut såhär ifall jag säker på "änglar 12":

```
select ID, artikel, artikelid, pris, lager from produkter where artikel LIKE '%änglar%' OR description LIKE '%änglar%' AND artikel LIKE '%12%' OR description LIKE '%12%' ORDER BY 'artikel'
```

Detta fungerar dock inte riktigt som det skall ;)
i detta fallet så visas ju artiklar som innehåller 12 även om inte änglar finns med osv..

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

## #9 — ConnyFox, 2004-11-23T11:26Z

Ingen som kan ta en titt på detta, gått flera dagar nu..
Om det inte går så vore ju det med bra o veta :D

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

## #10 — Peeer, 2004-11-23T11:29Z

SQL-satsen borde se ut såhär

```
select ID, artikel, artikelid, pris, lager from produkter where 
(artikel LIKE '%änglar%' OR description LIKE '%änglar%') AND 
(artikel LIKE '%12%' OR description LIKE '%12%') ORDER BY 'artikel'
```

Sen hur funktionen som bygger upp sql-satsen ska se ut.. det får du fundera på själv :p

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

## #11 — @nders, 2004-11-23T11:30Z

Du måste gruppera dina villkor med parenteser runt dina AND-block eftersom du har OR mellan vissa villkor.

Om det svaret inte var tydligt nog så förstår man nog vad Peeer skriver. ;)

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

## #12 — ConnyFox, 2004-11-23T13:06Z

Perfekt, efter lite mekande fick jag det äntligen att fungera, visste att det antagligen var något så här enkelt, varje dag lär man sig något nytt :D

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/116078-sql-sats-för-sök-fråga
