Skola TipSkole
------------------------- -----------
Brace Karic 1
Dositej Obradovic 4
Harvard 1
Mika Alas 3
Narodni heroji 0
Oxford 1
QL Akademija 2
Vuk Karadzic 4
(8 row(s) affected)
Kolona [TipSkole] kazuje nam kako je skola finansirana. Tip 1 ili 2 predstavljaju privatne skole. Svi ostali tipovi predstavljaju drzavne skole. Cesto se traze dve vrste upita, koji vracaju:
a) SVE skole iz tabele
b) samo drzavne skole
Napisati skriptu koja koristi parametar @SamoDrzavneSkole u SELECT iskazu, tako da se zavisno od vrednosti parametra dobiju na izlazu SVE skole, ili SAMO DRZAVNE skole. Skripta sme da ima samo jedan SELECT iskaz, odlucivanje o tome sta se pokazuje mora da se desi u WHERE. Parametar @SamoDrzavneSkole moze da ima vrednosti 1 ili 0. Ako je
@SamoDrzavneSkole = 1 => vratiti samo drzavne skole
@SamoDrzavneSkole = 0 => vratiti SVE skole
Pravilno napisana skripta treba da izgleda ovako:
DECLARE @SamoDrzavneSkole int
;
SET @SamoDrzavneSkole = 1
;
SELECT *
FROM #Skole WHERE @SamoDrzavneSkole = 1
;
Skripta u primeru je pravilna, ali ne daje tacan rezultat.
Vi treba da napisete skriptu koja vraca tacan rezultat, samo jedna SELECT, sve se odlucuje u WHERE.
Skripta treba da vraca tacan rezultat za obe vrednosti parametra 1 ili 0.
Za ostale vrednosti parametra, skripta treba da vrati prazan skup - 0 rows.
Evo je tabela i test podaci.
IF Object_ID('tempdb..#Skole') IS NOT NULL DROP TABLE #Skole
;
CREATE TABLE #Skole
(
Skola varchar(25) NOT NULL PRIMARY KEY
, TipSkole int NOT NULL CHECK (TipSkole IN (0,1,2,3,4,5))
)
;
INSERT INTO #Skole (Skola, TipSkole)
SELECT 'Narodni heroji' ,0
UNION
SELECT 'Vuk Karadzic' ,4
UNION
SELECT 'Brace Karic' ,1
UNION
SELECT 'QL Akademija' ,2
UNION
SELECT 'Dositej Obradovic' ,4
UNION
SELECT 'Mika Alas' ,3
UNION
SELECT 'Harvard' ,1
UNION
SELECT 'Oxford' ,1
;
-- (8 row(s) affected)
SELECT * FROM #Skole
;
Znam da je vrucina i da se nikome ne radi, ali eto, da se igramo...
:-)