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*')))