Just nu i M3-nätverket
Gå till innehåll

Avancerad SQL-nöt


Kalinka

Rekommendera Poster

Hejsan! GÅR denna sträng att förbättra!?

 

Ser ni vad den ska göra? Det är en relevanssökning; först kollar den om det finns en TITEL = query och lägger dessa överst, sen kollar den om ARBETE LIKE '%query%' sen kollar den om ALLA ORD i query finns med och sist lägger den de poster där NÅGOT ORD finns med i arbete.

 

Går det att snabba upp och effektivisera denna? Jag har gjort den utifrån eget huvud, kanske det finns bättre sätt att göra relevans sökning.

 

ARBETET är väldigt stor 1000 tecken +.

 

---

 

SELECT ar.aID ,'<img src="graphics/rel4.gif">' as relevans FROM arbeten AS ar, forfattare AS fr WHERE fr.fID = ar.fID AND ar.titel LIKE '%query1 query2 query3%'

 

UNION ALL

 

SELECT ar.aID ,'<img src="graphics/rel3.gif">' as relevans FROM arbeten AS ar, forfattare AS fr WHERE fr.fID = ar.fID AND arbete LIKE '%query1 query2 query3%' AND ar.titel NOT LIKE '%query1 query2 query3%'

 

UNION ALL

 

SELECT ar.aID ,'<img src="graphics/rel2.gif">' as relevans FROM arbeten AS ar, forfattare AS fr WHERE fr.fID = ar.fID AND ar.titel NOT LIKE '%query1 query2 query3%' AND (arbete LIKE '%query1%' AND arbete LIKE '%query2%' AND arbete LIKE '%query3%') AND aid NOT IN (SELECT ar.aID WHERE fr.fID = ar.fID AND arbete LIKE '%query1 query2 query3%')

 

UNION ALL

 

SELECT ar.aID ,'<img src="graphics/rel1.gif">' as relevans FROM arbeten AS ar, forfattare AS fr WHERE fr.fID = ar.fID AND ar.titel NOT LIKE '%query1 query2 query3%' AND (arbete LIKE '%query1%' OR arbete LIKE '%query2%' OR arbete LIKE '%query3%') AND aid NOT IN (SELECT ar.aID WHERE fr.fID = ar.fID AND arbete LIKE '%query1 query2 query3%')

 

---

 

Tack * 1000 till dig som klarar detta.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...