Употреба WHERE за услове

WHERE сегмент упита се користи не само у SELECT већ и у другим упитима попут DELETE и UPDATE.

Генерално налази се након главног дијела упита:

SELECT <kolone>
FROM <tabela>
WHERE <uslovi>
DELETE
FROM <tabela>
WHERE <uslovi>
UPDATE <tabela>
SET <šta se mjenja>
WHERE <uslovi>

У којем год упиту да се WHERE налазио он само може да поставља услове на колоне табела које су наведене у упиту.

Облик услова

Сами услови готово увјек морају бити типа:

VRIJEDNOST/KOLONA OPERACIJA_POREĐENJA VRIJEDNOST/KOLONA

тако да може:

Price >5
ProductID=7
CustomerName="ABC"
"ABC"=CustomerName
City=Address

итд.

Оно што не може или неће дати резултате какве желите су услови гдје само наведете вриједност, или само наведете колону или наведете једно и друго али не наведете операцију поређења.

Операције поређења

Операција Примјер
Веће од A > B
Мање од A < B
Веће или једнако А >= B
Мање или једнако A <= B
Једнако A = B
Није једнако A <> B
A != B
Текст је сличан A LIKE "ABC%"

Већина ових је очигледна, али последњи захтјева објашњење. Овај последњи примјер поставља услов да је у колони A текст који ПОЧИЊЕ са ABC. Овдје % игра улогу ЏОКЕРА који може да замјени ниједно до више слова на том мјесту. У функцији % у SQL је идентичан * у Аксесу.

Свака од овијк операција има РЕЗУЛТАТ. Ако је тврђење тачно, онда је резултат ТАЧНО или TRUE а ако није онда је резултат НЕТАЧНО или FALSE. Са овим вриједностима се даље може логичка математика радити. Веома често се таква математика зове Булова логика.

Операције са ТАЧНО/НЕТАЧНО

Има више операција које могу да раде са TRUE и FALSE али овдје ћемо навести само три.

Операција Примјер Објашњење
И A AND B Обије вриједности са једне и са друге стране AND морају бити тачне да би резултат био тачан.
ИЛИ A OR B Довољно је да је или А или Б тачно да би резултат био тачан.
Негација NOT A Aко је A тачно, резултат је нетачан. Ако је A нетачно, резултат је тачан.
Примјер: NOT (A=B) - ово даје тачно само ако A и B НИЈЕ тачно.

Више ових операција може бити нанизано:

A AND B AND C OR D

у којем случају резултат се рачунао као у математици када се ради сабирање па се ради са лијева на десно.

TRUE AND FALSE AND TRUE OR TRUE =
FALSE AND TRUE OR TRUE =
FALSE OR TRUE =
TRUE

Изузетак тог правила је NOT, које као множење се прво примјењује.

NOT 5>6 OR NOT 1=1 =
NOT FALSE OR NOT TRUE =
TRUE OR FALSE =
TRUE

Наравно ако се икада двоумите око редослиједа операција увјек се заграде могу користити да би били сигурни да ће се операције извршити редослиједом који вама одговара;

(NOT A>B) AND (C>50 OR C<10)

Примјери:

Биће наведен само WHERE дио израза овдје као рјешење. Подразумјева се да је ово WHERE дио неког већег израза. НЕ МОЖЕ WHERE САМО ДА СТОЈИ.

Услов 1: Quantity треба да буде веће од 15
WHERE Quantity > 15

Услов 2: ProductID треба да буде различит од 7.
WHERE ProductID != 7

Услов 3: Име купца треба да се завршава на o.
WHERE CustomerName LIKE "%o"

Услов 4: Price мора бити између 10 и 15
WHERE Price > 10 AND Price < 15

Услов 5: Price мора или бити мање од 10 или већа од 70.
WHERE Price > 10 OR Price >70

Услов 5: CategoryID може само бити 55 и 66
WHERE CategoryID=55 OR CategoryID=66

Услов 6: Quanity мора бити веће од 100 или Price мора бити мање од 10 или категорија мора бити 15.
WHERE Quantity > 100 OR CategoryID = 15 OR Price < 10

Услов 7: Држава мора бити Њемачка али град не смије бити Хамбург и Бон.
WHERE Country = "Germany" AND NOT (City = "Hamburg" OR City="Bonn")
или
WHERE Country = "Germany" AND (City <> "Hamburg" AND City<>"Bonn")

Последња измена: уторак, 5. мај 2020, 02:35