Jag vill utföra en sql-sats som hämtar de rader som innehåller angiven data i två kolumner i en tabell. Första saken man ska göra vid denna typen fel är att skriva ut SQL-strängen, i ditt fall SQL1. Gör du det kommer du se att du innesluter den kommaseparerade strängen med ' vilket inte borde fungera:Använda operatorn´IN
För detta vill jag använda sql-kommandot IN (som ju används istället för OR).
Detta fungerar bra när jag skickar data i form av en array ifrån ett formulär (2 st multiple select-listor) och sen använder den datan i en sql-sats med hjälp av request.form enl. föjlande:
SQL = "SELECT * FROM land WHERE land.region IN ('"&request.form("region")&"') AND land.category IN ('"&request.form("category")&"')"
Om jag däremot lagrar den data som skickas ifrån formuläret i en annan tabell (i två olika fält) för att vid senare tidpunkt kunna utföra samma sql-sats som ovan så fungerar det inte. Då hämtar sql-satsen bara de första lagrade tecknen i kolumnen. Jag har sparat värdena i text eller varchar-format där jag hämtar värdena.
Om jag istället går direkt in i databasen och kör frågan med de värden som jag vet finns sparade i kolumnerna så hämtas alla data korrekt.
Är det någon som har en aning om vad jag gör fel?
Jag kör mysql 4 och ASP.
Mina sql-satser ser ut enl. följande:
SQL = "SELECT * FROM tabell1
SQL1 = "SELECT * FROM land WHERE land.region IN ('"&RS("region")&"') AND land.category IN ('"&RS("category")&"')"
Fälten som efterfrågas i SQL1 ovan innehåller vardera en kommaseparerad sträng exempelvis "1,2" eller "5,16".
Det svar jag får är enbart baserat på de första siffrorna i varje sträng - dvs sökningen ger bara resultat på siffran 1 och 5 om man använder exempelsträngarna ovan.
Nån som har nåt bra tips om detta? Sv: Använda operatorn´IN
...IN ('1,2')...
/Johan