Minulla on kysely, joka kerää tietoja ehtojen perusteella. Pohjimmiltaan haluan tietää, onko sijainti maksanut yli 50 dollaria päivältä TAI kommenttiosassa on sana "suodatin" ...
Kyselyni on:
SELECT Store_Id, Paid_Out_Amount, Paid_Out_Comment, Paid_Out_Datetime, Update_UserName, Till_Number
FROM Paid_Out_Tb
WHERE (Store_Id = 1929) AND (Paid_Out_Datetime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)) AND (Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0,
GETDATE()), 0)) AND (Paid_Out_Amount > 50) OR
(Paid_Out_Comment LIKE N'%' + 'Filter' + '%')
Ongelmana on, että se palauttaa 460 tulosta ja sen pitäisi palauttaa vain 2.
Kaikki vastaukset
Sinun on käärittävä Paid_Out_Amoutn- ja Paid_Out_Comment-kriteerit toiseen sulkeisiin:
Se riippuu todella siitä, mihin käytät OR: ää. Paid_Out_Amount on suurempi kuin 50 tai Paid_Out_Amount on kuin N% Filter%. Lisää lausekkeeseen joitain sulkeita
Näyttää siltä, että puuttuu yksi suluista:
Sinun on myös tarkasteltava kyseistä LIKE-komentoa - päivitettiin koodi, jotta kommentit asetetaan pieniksi ja etsitään sanasuodatinta.
Katso myös komento BETWEEN Paid_Out_Datetime-tarkastuksellesi
AND
on etusijallaOR
. Sinun on ryhmiteltävä ehdot, jos haluat hallita etusijaa. Kokeile tätä:Yhdistin joukon ehdotuksiasi ja tulin esiin edellä. Tämä toimii. Kiitos!
Kokeile seuraavalla kyselyllä:
sinun on liitettävä sulkeisiin a-lausekkeen ensimmäinen osa (aina 'OR' asti).
Leave a Reply