04. marts 2002 - 00:54Der er
5 kommentarer og 1 løsning
Avanceret søgning
G'aften
Jeg sidder og roder med en søgefunktion, som ikke virker helt efter hensigten.
Funktionen skal bruges til en shop, som har flere varekategorier. Jeg har brug for at kunne vælge hvilke kategorier, jeg vil søge i, og definere et søgeord....og det går også fint.
For at lave en "ren" søgning pr. kategori, definerer jeg kategori-ID'erne som et array og looper den omkring min SQL-søgning. Det virker fint hvis jeg vælger under 5 kategorier går det normalt hurtigt (ca. 1-2 sek.), men hvis jeg vælger flere laver den time-out.
Hvem kan sige hvad der er galt, eller lave et alternativ????
Behold den kommaseparerede streng af kategorier.. og brug så denne SQL istedet:
"SELECT * FROM productCatalog WHERE CategoryID IN ("& catSearchStr &") AND ( vareName LIKE '%"& searchWord &"%' OR vareTeaser LIKE '%"& searchWord &"%' OR vareDesc LIKE '%"& searchWord &"%' OR)"
Prøv altid at begrænse dig selv til een forespørgsel. At loope igennem på den måde, hvor du laver en søgning som indeholder LIKE's, vil altid være meget langsom. Især LIKE er belastende.
Du kan lave udtrækket i en og samme sætning - prøv nedenstående kode.
SQL = "SELECT * FROM productCatalog WHERE (" for i = 0 to ubound(catSearchArr) catId = catSearchArr(i) if (i > 0) then SQL = SQL & " or " end if SQL = SQL & " categoryId=" & catID next SQL = SQL & ") and (" SQL = SQL & "vareName like '%" & searchWord & "%' " SQL = SQL & " or vareTeaser like '%"&searchWord&"%' " SQL = SQL & " or vareDesc like '%"&searchWord&"%') "
Inden du prøver at udføre sætningen kan du jo udskrive den i stedet for - så kan du jo se om SQL-sætningen omfatter det du har behov for.
rou > Jeg havde også på fornemmelsen, at det var mere klodset end det behøvede at være - men så er det jo godt, at der er så mange eksperter på eksperten.dk. Tak for hjælpen, det virkerde perfekt!
Får du også Type Mitchmatch i linie 2 eller er det kun mig. ?
"SELECT * FROM productCatalog WHERE CategoryID IN ("& catSearchStr &") AND ( vareName LIKE '%"& searchWord &"%' OR vareTeaser LIKE '%"& searchWord &"%' OR vareDesc LIKE '%"& searchWord &"%' OR)"
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.