webForumDet fria alternativet
Logga in / Bli medlem

Logik i SQL-sats

Databaser & SQL

2 svar · 197 visningar · startad av Vide

Medlem sedan dec. 19998 577 inlägg
Frågan#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
Medlem sedan juni 200032 967 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,

Medlem 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
257 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)