Avatar billede cardinale Nybegynder
25. marts 2003 - 15:10 Der er 3 kommentarer og
1 løsning

Søgning

Hvordan får man følgende sql til at søge efter flere ord end et?
Fx hvis man i søge feltet skriver anders mekaniker - så finder den alle de poster hvor begge disse ord indgår - også selvom de ikke står lige efter hinanden.

strresult ="select id, billedformat, thumbnail, dias, bestillingsnr, fotograf, beskrivelse, dansk_navn, videnskabeligt_navn, geografisk_lokalitet, land, teknisk_info from diasliste where "
    strresult = strresult&" (( bestillingsnr LIKE '%" & strquery & "%')" 
    strresult = strresult&" or ( fotograf LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( billedformat LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( pictureformat LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( beskrivelse LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( description LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( emneord LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( captions LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( dansk_navn LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( roedliste_status LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( videnskabeligt_navn LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( engelsk_navn LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( familie_latin LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( familie_dansk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( familie_engelsk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( orden_latin LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( orden_dansk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( orden_engelsk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( geografisk_lokalitet LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( naturtype LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( naturetype LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( amt LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( land LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( country LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( aarstid LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( season LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( kategori_dansk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( kategori_engelsk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( underkat_dansk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( underkat_engelsk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( kommentar_dansk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( kommentar_engelsk LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( teknisk_info LIKE '%" & strquery & "%')"
    strresult = strresult&" or ( teknisk_info_eng LIKE '%" & strquery & "%'))"
    if strkat <> "alle" then
        strresult = strresult&" and ((kategori_dansk = '" & strkat & "')or (underkat_dansk = '"& strkat & "'))"
    end if
    strresult = strresult&" order by beskrivelse"
    strresult = strresult& " LIMIT " & start & ", 21"
    set objReS = objconn.execute(strresult)

    If Not objReS.EOF Then
    number = 0
    tdcount = 0
Avatar billede sbm Nybegynder
26. marts 2003 - 11:24 #1
Du kan lave en SPLIT på brugerens søgestreng, hvor du deler efter f.eks. mellemrum

Så har du et array med et indlæg for hvert ord.

Så kører du dit array igennem, og udvider din SQL for hvert ord der er søgt efter.

Desværre bliver du nødt til at køre ALLE dine strresult = strresult linier igennem for HVERT søgeord. :-(
Avatar billede cardinale Nybegynder
26. marts 2003 - 11:27 #2
Uha - det lyder som noget jeg ikke gider kaste mig over...

Hvis du vil smide et svar kan du få point?
Avatar billede sbm Nybegynder
26. marts 2003 - 12:16 #3
Det er ligemeget.

Det kunne være en idé at lave en funktion som tager to parametre: kolonnenavnet der skal søges i og så dit array som du har efter du har lavet din SPLIT

Så returnerer funktionen automatisk den del af SQL koden som hører sig til for den pågældende kolonne.

Derefter kalder du funktionen en gang for hver kolonne, og vupti har du din samlede SQL kode.

Bare en tankestreg. :-)
Avatar billede cardinale Nybegynder
26. marts 2003 - 12:26 #4
Jeg tror jeg opgiver. Kan ikke lige overskue det. Er ved at få en knude af stres i maven...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester