---
title: "Två villkor uppfyllda ?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/69179-två-villkor-uppfyllda"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Pellefant"
published: "2003-02-24T02:52:37.000Z"
updated: "2003-02-24T15:42:32.000Z"
replies: 14
views: 373
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/69179-två-villkor-uppfyllda"
---

# Två villkor uppfyllda ?

## #1 — Pellefant, 2003-02-24T02:52Z

Hejsan!

Hur har jag lyckats klanta mig med denna?

```
SQL="SELECT * FROM Brunswick WHERE City = city AND Name = name ORDER BY Name ASC;"
```

Oavsett innehållet i city och name så plockas(väljs) hela innehållet fram från databasen.

En följdfråga på en gång, om:

\*namevariabeln delas upp på name1 och name2

\*cityvariabeln kan även ha alternativet "all"

Hur gör man då istället så att det räcker med att name1 eller name2 passar in på namekolumnen, samt att om city=all så väljs alla städer där namnvillkoret är uppfyllt(om en city är vald så väljs bara den staden)

Mer kod för den vetgirige: 

```
<%
city = request.form("city")
name = request.form("name")
%>
<p>
Searchdata:
<%=city%>
<p>
<%=name%>
<p>
<%
Set Databas = Server.CreateObject("ADODB.Connection")
	Databas.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("phone_numbers.mdb")
	Set RecSet = Server.CreateObject("ADODB.Recordset")
	SQL="SELECT * FROM Brunswick WHERE City = city AND Name = name ORDER BY Name ASC;" 
	RecSet.Open SQL, Databas, 3, 3 
	%>

	
	<% Do until RecSet.EOF 	%>
		<%=Recset("name")%><br>
			<%=Recset("city")%><p>
		<%Recset.movenext
		loop  %>

	
	<%RecSet.Close 
	Databas.Close %>
```

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

## #2 — Peeer, 2003-02-24T06:47Z

borde det inte vara:

```
SQL="SELECT * FROM Brunswick WHERE City = "&city&" AND Name = "&name&" ORDER BY Name ASC;"
```

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

## #3 — Engine^, 2003-02-24T09:09Z

```
<%
city = request.form("city")
name1 = request.form("name")
name2 = ? [blue]' Jag vet inte hur du vill dela upp name som...[/blue]
%>
<p>
Searchdata:
<%=city%>
<p>
<%=name%>
<p>
<%
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("phone_numbers.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

If city = vbNullString Then
    strCity = ""
Else
    strCity = "City = '" & city & "' AND "
End If

SQL="SELECT * FROM Brunswick WHERE " & strCity & "(Name = '" & name1 & "' OR Name = '" & name2 & "') ORDER BY Name ASC;" 
RecSet.Open SQL, Databas, 3, 3 

Do until RecSet.EOF
    Response.Write (Recset("name") & "<br>")
    Response.Write (Recset("city") & "<p>")
    Recset.movenext
Loop

RecSet.Close 
Databas.Close
%>
```

Något sådant du söker efter?

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

## #4 — Pellefant, 2003-02-24T11:01Z

Tack för all hjälp. 

Såhär delade jag uppp Name: 
<http://www.webforum.nu/showthread.php?s=&postid=565668#post565668>

En liten sista fråga i ämnet:

SQL satsen väljer nu fram namn som är PRECIS som hela name-kolumninnehållet, hur ändrar man så att om man tex säker på "Anna", så hittas "Anna Todd-Smith"  (nu måste man skriva just "Anna Todd-Smith" i sökrutan. 

Dvs, skriver man "Anna, Hyde" i sökrutan hur gör man då får att  datorn ska välja alla rader där Anna och Hyde förekommer, tex "Anna Chaplin", "Mr Hyde" och "Sara Hydepark"

```
SQL="SELECT * FROM Brunswick WHERE " & strCity & "(Name = '" & name1 & "' OR Name = '" & name2 & "') ORDER BY Name ASC;" 
RecSet.Open SQL, Databas, 3, 3
```

Tack för ordet. :)

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

## #5 — Engine^, 2003-02-24T11:30Z

```
astrName() = Split(name, ",")

strName = "Name = '%" & Trim(astrName(0)) & "%'"

If Ubound(astrName) > 1 Then
    strName = strName & " OR Name = '%" & Trim(astrName(1)) & "%'"
End If

SQL="SELECT * FROM Brunswick" & _
" WHERE " & strCity & " (" & strName & ")" & _ 
" ORDER BY Name ASC;"
```

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

## #6 — @nders, 2003-02-24T11:35Z

byt ut = mot LIKE-operatorn för sökning.

mvh,

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

## #7 — Pellefant, 2003-02-24T12:10Z

Hm...får inte ihop det ändå.

På:
name = request.form("Name")

astrName() = Split(name, ",")

Så får jag : Type mismatch: 'astrName' 

Har även testat med: astrName = Split(name, ",") , men förmodar att det är fel, för då hittas ingenting, även om det stämmer överens mot db:n.

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

## #8 — Engine^, 2003-02-24T13:29Z

Ops... så kan det gå, när man inte tänker hela vägen ;)

```
Dim astrName()

If city = vbNullString Then
    strCity = ""
Else
    strCity = "City LIKE '%" & city & "%' AND "
End If

If Instr(name, ",") > 0 Then
    astrName = Split(name, ",")
    strName = "Name LIKE '%" & Trim(astrName(0)) & "%' OR Name LIKE '%" & Trim(astrName(1)) 
Else
    strName = "LIKE = '%" & Trim(name) & "%'"
End If

SQL="SELECT * FROM Brunswick" & _
" WHERE " & strCity & " (" & strName & ")" & _ 
" ORDER BY Name ASC;"
```

Jag har tyvärr ingen server att testa mot, så ibland dyker det upp fel, som jag helt enkelt inte tänker på... Du kan ju testa byta mot *astrName = Split(Request.Form("name"))* och se om det fungerar bättre.

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

## #9 — Pellefant, 2003-02-24T15:07Z

Hej igen!  :)

Fick det inte att fungera. Jag skrev om det lite, så att jag själv ska förstå det hela. Nu splittar den upp namnet i två variabler. 

Ett exempel:

Jag söker efter "Todd, Sharon" i city: Brunswick, då får jag denna utdata:

name1:Todd
name2:Sharon
strName:Name LIKE '%Todd%' OR Name LIKE '%Sharon%'

Microsoft JET Database Engine error '80040e14' 

Syntax error in query expression 'City LIKE '%Brunswick%' AND ' (Name LIKE '%Todd%' OR Name LIKE '%Sharon%') ORDER BY Name ASC;'. 

/eze/searchresult.asp, line 89 

Jag har försökt skriva om SQL satsen med name1, name2 istället, men det verkar inte ha gått så bra.   :(

```
If Instr(strName, ",") > 0 Then
    strName = "Name LIKE '%" & Trim(name1) & "%' OR Name LIKE '%" & Trim(name2) & "%'" 
Else
    strName = "LIKE = '%" & Trim(name1) & "%'"
End If

SQL="SELECT * FROM Brunswick" & _
" WHERE " & strCity & " (" & strName & ")" & _ 
" ORDER BY Name ASC;"
```

Hela koden, men den behövs nog egentligen inte nu:

```
<%
city = request.form("city")

If city = vbNullString Then
    strCity = ""
Else
    strCity = "City = '" & city & "' AND "
End If

strName = request.form("name")
arrName = split(strName, ",")
name1 = trim( arrName(0) )
if ubound( arrName ) = 1 then
  name2 = trim( arrName(1) )
else
  name2 = ""
end if
%>
<p>
name1:<%=name1%><br>
name2:<%=name2%><p>
<p>
<%
If city = vbNullString Then
    strCity = ""
Else
    strCity = "City LIKE '%" & city & "%' AND '"
End If

If Instr(strName, ",") > 0 Then
    strName = "Name LIKE '%" & Trim(name1) & "%' OR Name LIKE '%" & Trim(name2) & "%'" 
Else
    strName = "LIKE = '%" & Trim(name1) & "%'"
End If
%>
<br>
strName:<%=strName%><p>
<p>
<%
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("phone_numbers.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

SQL="SELECT * FROM Brunswick" & _
" WHERE " & strCity & " (" & strName & ")" & _ 
" ORDER BY Name ASC;" 

RecSet.Open SQL, Databas, 3, 3             [b]<---- rad 89[/b]

Do until RecSet.EOF
    Response.Write (Recset("name") & "<br>")
    Response.Write (Recset("address"))
    Recset.movenext
Loop
RecSet.Close 
Databas.Close
%>
```

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

## #10 — Engine^, 2003-02-24T15:11Z

```
If Instr(strName, ",") > 0 Then
    strName = "Name LIKE '%" & Trim(name1) & "%' OR Name LIKE '%" & Trim(name2) & "%'" 
Else
    strName = "Name LIKE = '%" & Trim(name1) & "%'"
End If
```

Syntax error kommer från apostrofen efter AND, men jag förstår inte riktigt hur den har hamnat där...

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

## #11 — @nders, 2003-02-24T15:12Z

Skriv ut den färdiga SQL-frågan istället, så är det lättare att felsöka.

mvh

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

## #12 — Pellefant, 2003-02-24T15:22Z

Hej igen!

Nu hajar jag äntligen hur man skriver ut en körd SQL fråga. \*tack\*  (  med \<%=SQL%\>   )

Såhär ser det ut:

```
name1:Todd
name2:Sharon
strName:Name LIKE '%Todd%' OR Name LIKE '%Sharon%'

Och så själva SQL frågan:

SELECT * FROM Brunswick WHERE City LIKE '%Brunswick%' AND ' (Name LIKE '%Todd%' OR Name LIKE '%Sharon%') ORDER BY Name ASC;
```

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

## #13 — @nders, 2003-02-24T15:24Z

```
If city = vbNullString Then
    strCity = ""
Else
    strCity = "City LIKE '%" & city & "%' AND '" [b] <--- Ta bort den högraste apostrofen[/b]
End If
```

Mvh,

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

## #14 — Pellefant, 2003-02-24T15:32Z

Tack, då fungerar det äntligen.

Tack Peeer, Engine och @nders för hjälpen!!!!

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

## #15 — Pellefant, 2003-02-24T15:42Z

Det ska vara såhär också så att det funkar om strängen är utan komma:

```
strName = "Name LIKE '%" & Trim(name1) & "%'"
```

Skriver det för om någon får för sig att använda denna koden i framtiden.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/69179-två-villkor-uppfyllda
