Hej Emil
Dette er jo et udmærket eksempel på, at det kan være relevant at benytte
'IN'
SELECT * FROM Tabel Where
(Tabel.Felt1 IN ('*ord1*', '*ord2*') ) OR
(Tabel.Felt2 IN ('*ord1*', '*ord2*') ) OR
(Tabel.Felt3 IN ('*ord1*', '*ord2*') ) OR
(Tabel.Felt4 IN ('*ord1*', '*ord2*') )
....
Det hjælper da en smule - især når der kommer mange søgeord
Kaj
Emil <spam@chokoladen.dk> skrev i en
nyhedsmeddelelse:a8fe0894.0106150144.14ea27fb@posting.google.com...
> Hejsa NG!
> Jeg har lavet mig en lang sql, og sidder nu med en fornemmelse af at jeg
> ikke har gjort det særligt optimalt
>
> Mit problem:
> Jeg vil generere en sql-streng til at foretage en søgning (vha LIKE) i én
> tabel, men i flere forskellige felter, og med x antal ord. Således at hvis
> bare ét af de ord man søger på findes i min. ét af de felter man søger i,
> skal posten hentes..
> - Det er for så vidt heller ikke noget problem.. Problemet kommer når jeg
så
> gerne vil have dem sorteret efter relevans. Dvs. sådan at de poster hvori
> der blev fundet flest søgeord står øverst, og dem der kun indeholdt et
> enkelt søgeord står nederst.
> Jeg ville helst hvis det kunne mokkes ind i en enkelt sql-streng.
>
> Min nuværende løsning:
> Måden jeg gør det på nu fungerer i og for sig, men sql'en bliver enddog
> ganske lang. Herunder ses den for en søgning på 2 ord i 4 felter:
> (sql-generatoren kan findes på
http://emil.fixware.dk/sql.asp , hvis I vil
> se hvor drastisk længden stiger, når man fylder et par ord mere på).
>
> Er der en smartere måde? (..eller er det smartere at bruge flere sql'er?)
>
> Håber I kan hjælpe!
> \Emil
>
> SELECT * FROM Tabel Where
> (Tabel.Felt1 LIKE '*ord1*') OR
> (Tabel.Felt2 LIKE '*ord1*') OR
> (Tabel.Felt3 LIKE '*ord1*') OR
> (Tabel.Felt4 LIKE '*ord1*') OR
> (Tabel.Felt1 LIKE '*ord2*') OR
> (Tabel.Felt2 LIKE '*ord2*') OR
> (Tabel.Felt3 LIKE '*ord2*') OR
> (Tabel.Felt4 LIKE '*ord2*')
> ORDER BY
> (((Tabel.Felt1 LIKE '*ord1*') OR (Tabel.Felt2 LIKE '*ord1*') OR
(Tabel.Felt3
> LIKE '*ord1*') OR (Tabel.Felt4 LIKE '*ord1*')) AND ((Tabel.Felt1 LIKE
> '*ord2*') OR (Tabel.Felt2 LIKE '*ord2*') OR (Tabel.Felt3 LIKE '*ord2*') OR
> (Tabel.Felt4 LIKE '*ord2*'))),
> (((Tabel.Felt1 LIKE '*ord1*') OR (Tabel.Felt2 LIKE '*ord1*') OR
(Tabel.Felt3
> LIKE '*ord1*') OR (Tabel.Felt4 LIKE '*ord1*')))