Jag får snart hjärnsläpp om jag inte lyckas lösa detta: Hej.Filtrera bort "filter" i SQL och ASP
Jag bygger en sökmotor där man skall kunna söka efter olika segelbåtsmodeller. Jag har en sida där man anger tillverkningsår, Längd överallt, längd vid vattenlinjen och bred osv. Man skall även kunna välja antal kojplatser, men om det kvittar för användaren skall han kunna välja "Spelar ingen roll" i en dropbox som dessutom består av 1,2,3,4,5,6,7,8,9,10,11,12 som antal kojplatser.
Allt fungerar perfekt om användaren väljer tex 7 som antal kojplatser, en SQL sats kollar helt enkelt igenom databasen och söker efter båtar som matchar med tex "Seldén rigg", 18 m Löa och 5,1 i djupgående och 7 antal kojplatser + resten.
Hittar den en båt som matchar är ju sökningen lyckad, även om den inte hittar någon.
Men om användaren vill söka efter Seldén rigg", 18 m Löa och 5,1 i djupgående men bryr sig inte om antalet kojplatser. Alltså, som det ser ut nu har "spelar ingen roll" värdet 0 eller ingenting, kommer SQL satsen leta efter båtar med dem kriterierna samt om dem har 0 kojplatser. Den skall ju ge ifrån sig alla båtar med de andra kriterierna oavsett antal kojplatser.
Hur löser jag detta? Hur gör jag så att SQL satsen kan exkludera vissa "önskemål" efter att ha fått ett visst värde från ett fält?
Så här ser den ut nu:
<code>
<%
Set boats = connection.execute
("SELECT * FROM boats WHERE marke LIKE '%"&marke&"%' AND till_ar LIKE '%"&till_ar&"%' AND Loa_avr LIKE '%"&Loa&"%' AND bredd LIKE '%"&bredd&"%' AND keel_type LIKE '%"&keel_type&"%' AND kojer LIKE '%"&kojer&"%' ORDER BY modell DESC") %>
</code>
Tacksam för hjälp!Sv: Filtrera bort "filter" i SQL och ASP
Testa detta:
<code>
strKoj = ""
if kojer <> 0 then
strKoj = "AND kojer LIKE '%" & kojer & "%' "
End if
Set boats = connection.execute
("SELECT * FROM boats WHERE marke LIKE '%"&marke&"%' AND till_ar LIKE '%"&till_ar&"%' AND Loa_avr LIKE '%"&Loa&"%' AND bredd LIKE '%"&bredd&"%' AND keel_type LIKE '%"&keel_type&"%' " & strKoj & "ORDER BY modell DESC") %>
</code>
EDIT:
Möjligtvis skulle det kunna funka med detta också:
<code>
if kojer = 0 then
kojer = "%" 'Eller möljligtvis "*" beroende på provider och db.
End if
Set boats = connection.execute
("SELECT * FROM boats WHERE marke LIKE '%"&marke&"%' AND till_ar LIKE '%"&till_ar&"%' AND Loa_avr LIKE '%"&Loa&"%' AND bredd LIKE '%"&bredd&"%' AND keel_type LIKE '%"&keel_type&"%' AND kojer LIKE '%"&kojer&"%' ORDER BY modell DESC") %>
</code>
//fredda