webForumDet fria alternativet

Logik i SQL-sats

2 svar · 195 visningar · startad av Vide

VideMedlem sedan dec. 19998 577 inlägg
#1

Vaför träffar denna SQL-sats på texter med ordet "draw" i?

Select TOP 20 * from Q3console WHERE ( ( kommando LIKE '%attack%' ) OR ( orginalinst LIKE '%attack%' ) OR ( beskrivning LIKE '%attack%' ) ) AND ( ( NOT ( kommando LIKE '%draw%' ) ) OR ( NOT ( orginalinst LIKE '%draw%' ) ) OR ( NOT ( beskrivning LIKE '%draw%' ) ) ) ORDER BY kommando ASC

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

[Redigerat av Vide den 02 sep 2001]

@ndersMedlem sedan juni 200032 969 inlägg
#2

krångla inte, vännen. :)

Select TOP 20 * from Q3console WHERE (kommando LIKE '%attack%' OR orginalinst LIKE '%attack%' OR beskrivning LIKE '%attack%') 
AND NOT (kommando LIKE '%draw%' OR orginalinst LIKE '%draw%' OR beskrivning LIKE '%draw%') ORDER BY kommando ASC

mvh,

------------------
mördar-anders, det är jag.

VideMedlem sedan dec. 19998 577 inlägg
#3

Problemet är att SQL-strängen genereras automagiskt och jag vet inte ifrån början vilka fält som skall sökas, alltså blir det svårt att sätta in ett "NOT" för vissa fält-grupper.

Men jag mixtrade lite och kom fram till att jag hade missast i logiken efter allt. Detta blev resultat (efter lite städande av paranteser ;)):

Select TOP 20 * from Q1console WHERE ( kommando LIKE '%attack%' OR orginalinst LIKE '%attack%' OR beskrivning LIKE '%attack%' ) AND ( NOT kommando LIKE '%notarget%' AND NOT orginalinst LIKE '%notarget%' AND NOT beskrivning LIKE '%notarget%' ) ORDER BY kommando ASC

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

[Redigerat av Vide den 02 sep 2001]

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)