webForumDet fria alternativet

sokning fran flera tabeller

Databaser & SQL

4 svar · 347 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Frågan#1

hejsan,

jag kor en sokning via method=get... och nar jag soker pa ngt med 2 ord dvs fonster ruta sa ser urlen ut pa foljande vis sokning.asp?q=fonster+ruta vilket e forstaligt...

i min databas har jag fonster i en kolumn och ruta i en annan kolumn hur kan jag mha denna sokning hitta posten som stammer overens med fonster ruta, om de tva orden finns i varsin kolumn?

just nu ser min query ut pa foljande vis:

sql = "SELECT * FROM productItem WHERE " &_
                          " productItemId LIKE '%"&request.querystring("q")&"%' OR " &_
                          " design LIKE '%"&request.querystring("q")&"%' OR " &_
                          " smalldesc LIKE '%"&request.querystring("q")&"%' OR " &_
                          " productTypeID LIKE '%"&request.querystring("q")&"%' OR " &_
                          " productCategoryID LIKE '%"&request.querystring("q")&"%' OR " &_
			  " catalogID LIKE '%"&request.querystring("q")&"%' OR " &_
                          " name LIKE '%"&request.querystring("q")&"%' order by "&sortBy&" ASC"

men det funkar inte for 2ord? for ett ord ar det inga problm med 2ord eller 3ord???

Medlem sedan dec. 19996 721 inlägg
#2
arrWords=split(request.querystring("q")," ")
strWhere=""
for each strWord in arrWords
   if strWord<>"" then
      if strWhere<>"" then strWhere = strWhere & " AND "
      strWord=replace(strWord,"'","''")
      strWhere= strWhere &  " (productItemId LIKE '%" & strWord & "%' OR " &_
                          " design LIKE '%" & strWord & "%' OR " &_
                          " smalldesc LIKE '%" & strWord & "%' OR " &_
                          " productTypeID LIKE '%" & strWord & "%' OR " &_
                          " productCategoryID LIKE '%" & strWord & "%' OR " &_
			  " catalogID LIKE '%" & strWord & "%' OR " &_
                          " name LIKE '%" & strWord & "%')"

   end if
next

if strWhere<>"" then strWhere = " WHERE " & strWhere
sql = "SELECT * FROM productItem " & strWhere & " order by " & sortBy & " ASC"
Medlem sedan dec. 20001 626 inlägg
#3

KLOCKRENT... tusen tack... tankte bara hora med dig om det ar mojligt att inte gora skillnad mellan sokningen: bildelar och bil delar? om det i databasen star bildelar?

Medlem sedan dec. 19996 721 inlägg
#4

Det spelar ingen roll om man skriver "bildelar" eller "bil delar" (förutom att man borde straffas för särskrivningen). LIKE-sökningen letar inte efter hela ord, så letar man efter "bil" och "delar" så hittar man "bildelar". Däremot blir det problematiskt om det står fel i databasen. Då måste man bygga upp olika ordalternativ (om vi nu håller det till rena SQL-sökningar. Med annan databas- och index-teknik kan andra lösningar finnas till buds).

Medlem sedan dec. 20001 626 inlägg
#5

man tackar!

266 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)