/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SOS! Emil in SQL-Trouble!
Fra : Emil Rossing


Dato : 14-06-01 20:36

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




 
 
Emil Rossing (16-06-2001)
Kommentar
Fra : Emil Rossing


Dato : 16-06-01 20:07

Ja, det er mig selv igen.

På grund af den (desværre) manglende aktivitet herinde har jeg postet mit
spørgsmål på dk.edb.database i stedet for. Jeg ved ikke lige hvordan man
fut'ter, men nu har jeg i hvert fald gjort opmærksom på, at jeg har
crosspostet.

\Emil



Søg
Reklame
Statistik
Spørgsmål : 177556
Tips : 31968
Nyheder : 719565
Indlæg : 6408861
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste