Avatar billede cpufan Juniormester
14. november 2004 - 11:55 Der er 14 kommentarer og
1 løsning

SQL sætning flere LIKE med AND eller OR Søgefunktion

Hej

Jeg er ved at lave en fritekstssøgning hvor der indgår flere tabeller.
Det går fint når jeg skriver where kolonne LIKE %' & var & %'

men hvis jeg skriver
where kolonne1 LIKE %' & var & %' OR kolonne2 LIKE %' & var & %'

så stejler serveren :)

der kommer ikke fejl, men processen går i 100% cpu.

please help
Avatar billede htm Nybegynder
14. november 2004 - 12:02 #1
Prøv sådan:
sql = "SELECT .... WHERE kolonne1 LIKE '%" & var & "%' OR kolonne2 LIKE '%" & var & "%'"
Avatar billede cpufan Juniormester
14. november 2004 - 12:21 #2
er det ikke det samme jeg skrev?
Avatar billede cpufan Juniormester
14. november 2004 - 12:21 #3
det var i hvert tilfælde det jeg mente
Avatar billede cpufan Juniormester
14. november 2004 - 12:22 #4
ellers kommer der jo kompilerfejl
Avatar billede htm Nybegynder
14. november 2004 - 12:23 #5
nej du bruger ' til at "breake" din asp med, og mangler dermed ' omkring. Da det er en like er det nødvendigt med omkransning
Avatar billede htm Nybegynder
14. november 2004 - 12:23 #6
Så må du vise noget mere kode... den sætning vil ikke få serveren til at "stejle"

Hvilken database bruger du ?
Avatar billede cpufan Juniormester
14. november 2004 - 12:28 #7
Sådan ser den ud:
hvis jeg fjerner udkommenteringen på en af de ekstra linier,
så går cpu i 100%
 
sqludst = "select TOP 50 * from resultater r, ejer e, kat k, udstilling u"
  'sqludst = sqludst & " where k.navn LIKE '%"& ord &"%' "
  sqludst = sqludst & " where k.opdr LIKE '%"& ord &"%' "
  'sqludst = sqludst & "OR e.efternavn LIKE '%"& ord &"%' "
  'sqludst = sqludst & " OR r.kommentar LIKE '%"& ord &"%'"
  'sqludst = sqludst & " OR e.webadresse LIKE '%"& ord &"%' "
  'sqludst = sqludst & "OR k.beskriv LIKE '%"& ord &"%' "
  'sqludst = sqludst & "OR u.bynavn LIKE '%"& ord &"%' "
  'sqludst = sqludst & "OR u.afholder LIKE '%"& ord &"%'"
  sqludst = sqludst & " AND r.katid = k.katid AND k.ejerid = e.ejerid AND r.udstid = u.udstid"
  sqludst = sqludst & " ORDER by u.dato, k.race, r.klasse"
Avatar billede cpufan Juniormester
14. november 2004 - 12:29 #8
se bort fra den første where, ved godt der er 2
Avatar billede htm Nybegynder
14. november 2004 - 12:35 #9
Prøv og definer felterne ved navn i stedet for *

eks.

SELECT TOP 50 r.felt1, r.felt2 etc...

evt kan du prøve med:
SELECT TOP 50 r.*, e.*, k.*, u.* FROM ...

Men prøv lige at definer felterne i stedet for *
Avatar billede cpufan Juniormester
14. november 2004 - 12:38 #10
det virker jo fint med * og een LIKE
(der er over 30 felter)
Avatar billede htm Nybegynder
14. november 2004 - 12:46 #11
Men kunne det tænkes at du kunne prøve det :-)

jeg har siddet i ca samme situation, og her hjalp det meget da det blev benævnt med feltnavne i stedet for *.

Grunden er at så skal din database ikke til at udregne for hver gang hvilke felter der skal hives med ud.

Derudover kunne du godt bruge nogle paranteser. sådan er du ikke blander OR og AND

eks.

WHERE (felt1 LIKE '%" & var & "%' OR felt2 LIKE '%" & var & "%') AND r.katid = k.katid ...
Avatar billede cpufan Juniormester
14. november 2004 - 16:51 #12
prøvede denne med samme resultat, da jeg tog en ekstra LIKE med

  sqludst = "select TOP 50 k.navn, k.opdr from resultater r, ejer e, kat k, udstilling u"
  sqludst = sqludst & " where k.navn LIKE '%"& ord &"%'"
  'sqludst = sqludst & " OR k.opdr LIKE '%"& ord &"%'"
  'sqludst = sqludst & " OR e.efternavn LIKE '%"& ord &"%'"
  'sqludst = sqludst & " OR r.kommentar LIKE '%"& ord &"%'"
  'sqludst = sqludst & " OR e.webadresse LIKE '%"& ord &"%'"
  'sqludst = sqludst & " OR k.beskriv LIKE '%"& ord &"%'"
  'sqludst = sqludst & " OR u.bynavn LIKE '%"& ord &"%'"
  'sqludst = sqludst & " OR u.afholder LIKE '%"& ord &"%'"
  sqludst = sqludst & " AND r.katid = k.katid AND k.ejerid = e.ejerid AND r.udstid = u.udstid"
  sqludst = sqludst & " ORDER by u.dato, k.race, r.klasse"
  set rs = conn.execute(sqludst)
Avatar billede cpufan Juniormester
14. november 2004 - 16:52 #13
prøver lige med paranteser
Avatar billede cpufan Juniormester
14. november 2004 - 16:57 #14
parantesen gjorde udslaget :) SMILER bredt

så kom med et svar
Avatar billede htm Nybegynder
14. november 2004 - 17:33 #15
ok :-)

men selvom du ikke se resultatet med feltnavne i stedet, er det alligevel bedre :-)
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