Professional Documents
Culture Documents
Klauzula WHERE - Nastavak Primjeri
Klauzula WHERE - Nastavak Primjeri
...nastavak (primjeri)
Primjer 20. Prikazati imena zaposlenih koji rade u odjeljenju 20, a imaju posao
vozača.
SELECT ime FROM RADNIK
WHERE brod = 20 AND posao = 'vozač';
Primjer 21. Prikazati ime, posao i platu uposlenih u odjeljenju 30, čija je plata
veća od 2000.
SELECT R.ime, R.posao, R.plata, R.brod FROM RADNIK R
WHERE R.brod = 30 AND R.plata > 2000;
Primjer 22. Prikazati ime, posao, platu i premiju uposlenih čiji je posao analitičar
ili savjetnik.
SELECT ime, posao, plata, premija FROM RADNIK
WHERE posao = 'analitičar' OR posao = 'savjetnik';
U ovom upitu potrebno je da bude zadovoljen jedan od dva uslova, pa je
korišten operator OR. Baza je osmišljena tako da jedan zaposleni može obavljati
samo jedan posao u preduzeću!
Ovaj upit može da se uradi i na drugi način, korištenjem operatora IN, a tada
se kao elementi skupa koji zadovoljavaju uslove navode poslovi 'analitičar' i
'savjetnik'.
SELECT ime, posao, plata, premija FROM RADNIK
WHERE posao IN ('analitičar', 'savjetnik');
Primjer 23. Prikazati ime, posao, platu i premiju zaposlenih čiji posao nije
analitičar ni savjetnik.
SELECT ime, posao, plata, premija FROM RADNIK
WHERE posao <> 'analitičar' AND posao <> 'savjetnik';
U ovom zadatku potrebno je da ne budu prikazani zaposleni koji obavljaju
određene poslove, pa je korišten operator NOT IN da bi bili eliminisani oni
poslovi koji su navedeni u skupu.
SELECT ime, posao, plata, premija FROM RADNIK
WHERE posao NOT IN ('analitičar', 'savjetnik');
Primjer 25. Prikazati ime i broj odjeljenja zaposlenih koji rade u odjeljenju 10 ili
20, a kvalifikacija im je VKV.
SELECT ime, brod FROM RADNIK
WHERE (brod = 10 OR brod = 20) AND kvalif = 'VKV';
U ovom upitu imamo kombinaciju uslova koji su povezani operatorima AND i
OR, pa su zagrade neophodne da bi dobili tačno ono rješenje koje se traži u
zadatku. U dijelu upita (brod = 10 OR brod = 20) izdvojeni su zaposleni iz
odjeljenja 10 ili 20, a onda je dodat još i uslov da oni, pored toga, treba da imaju
i kvalifikaciju VKV. Ovaj zadatak može se uraditi i na drugi način, a da i dalje
bude ispravan:
SELECT ime, brod FROM RADNIK
WHERE (brod = 10 AND kvalif = 'VKV') OR (brod = 20 AND kvalif =
'VKV');
Ako bismo ovaj upit uradili bez stavljanja zagrada tamo gdje je to potrebno,
prikazivao bi netačne rezultate, kao npr.:
SELECT ime, brod FROM RADNIK
WHERE brod = 10 OR brod = 20 AND kvalif = 'VKV';
U nekim SUBP (Oracle, SQL Server i sl.) operacija AND ima viši prioritet od
operacije OR, a NOT ima najviši prioritet. Zbog toga bi ovaj iskaz bio netačno
interpretiran kao uslov: brod = 10 OR (brod = 20 AND kvalif = 'VKV'). Upotreba
zagrada je preporučljiva da korisnik ne bi morao da pamti prioritete operacija.
Primjer 26. Prikazati ime, posao i kvalifikaciju zaposlenih koji obavljaju posao
upravnika ili savjetnika, a zaposleni su u odjeljenju 20.
SELECT ime, posao, kvalif FROM RADNIK
WHERE posao IN ('upravnik', 'savjetnik') AND brod = 20;
Primjer 28. Prikazati ime, datum zaposlenja, platu, premiju i broj odjeljenja za
zaposlene koji imaju platu između 1000 i 2000 (uključujući i te vrijednosti).
SELECT ime, datzap, plata, premija, brod FROM RADNIK
WHERE plata BETWEEN 1000 AND 2000;
A rezultat je:
Primjer 29. Prikaži ime i platu uposlenih čija je plata od 2600 do 3000.
SELECT R.ime, R.plata FROM RADNIK R
WHERE R.plata >= 2600 AND R.plata <= 3000;
Primjer 31. Prikazati zaposlene koji imaju platu jednaku bilo kojoj vrijednosti iz
skupa {1000, 1500, 2000}.
SELECT idbr, ime, plata FROM RADNIK
WHERE plata = ANY (1000, 1500, 2000);
Primjer 32. Prikazati zaposlene čija je plata veća od svih navedenih vrijednosti u
skupu {1000, 1500, 2000}.
SELECT idbr, ime, plata FROM RADNIK
WHERE plata > ALL (1000, 1500, 2000);