-- 5 sa prethodnih vezbi
-- umesto dva okidaca (jedan za unos, a drugi za brisanje predmeta) moze da se napise jedan

--CREATE TRIGGER menjanje_predmet
--   AFTER INSERT OR DELETE ON da.predmet
--   for each row
--   BEGIN
--      IF INSERTING THEN update broj_predmeta set broj = broj + 1;
--      ELSEIF DELETING THEN update broj_predmeta set broj = broj - 1;
--
--      END IF;
--   END@

--insert into da.predmet (id, oznaka, naziv, espb) 
--                         values(2002, 'predm13', 'predmet 13', 15)@

--select *
--from broj_predmeta@

--delete from da.predmet
--where id=2002@

--select *
--from broj_predmeta@


--drop trigger menjanje_predmet@

--1

--pravljenje tabela 

--create table student_polozeno (
--indeks int,
--espb smallint)@

--create table predmet_polozeno (
--idpredmeta int,
--brojstudenata smallint)@

--unos podataka 

--insert into student_polozeno 
--select indeks, sum(espb)
--from da.ispit i join da.predmet p
--		on i.idpredmeta=p.id
--		and ocena>5 and status='o'
--where not exists (select *
--                  from da.dosije d join da.PREDMETPROGRAMA pp
--                  		on d.idprograma=pp.idprograma and vrsta='obavezan'
--                  	    and d.indeks=i.indeks
--                  where not exists (select *
--                                    from da.ispit i2
--                                    where i2.indeks=d.indeks and i2.idpredmeta=pp.idpredmeta
--                                    and ocena>5 and status='o'))
--group by indeks@


--merge into student_polozeno sp
--using (select indeks, sum(espb) polozeno
--       from da.ispit i join da.predmet p
--		   on i.idpredmeta=p.id
--		   and ocena>5 and status='o'
--      group by indeks
--) as t
--on sp.indeks=t.indeks
--when matched then 
--   update
--   set espb=polozeno
--when not matched then 
--   insert 
--   values(t.indeks, t.polozeno)@


--insert into predmet_polozeno 
--select idpredmeta, count
--from da.ispit i 
--where ocena>5 and status='o'
--group by idpredmeta@


-- okidac koji menja tabele student_polozeno i predmet_polozeno nakon unosa novog polozenog ispita 
--create trigger novi_ispit after insert on da.ispit
--referencing new as novo
--for each row
--when (novo.ocena>5 and novo.status='o')
--begin atomic
--	if novo.indeks in (select indeks from student_polozeno) then
--			update student_polozeno
--			set espb = espb + (select espb from da.predmet
--			                   where id=novo.idpredmeta)
--                                         where indeks=novo.indeks;
--	else insert into  student_polozeno
--	                  select novo.indeks, espb
--	                  from da.predmet 
--	                  where id=novo.idpredmeta;
--end if;

--	if novo.idpredmeta in (select idpredmeta from predmet_polozeno) then
--			update predmet_polozeno
--			set brojstudenata = brojstudenata + 1
--                                      where idpredmeta=novo.idpredmeta;
--	else insert into  predmet_polozeno
--	     values (novo.idpredmeta, 1);		
--end if;			
--end@


--select *
--from student_polozeno
--where indeks=20150320@

--select *
--from predmet_polozeno
--where idpredmeta=2010@


--unos polozenog ispita za studenta i predmet o kojima postoje podaci u  tabelama
--student_polozeno i predmet_polozeno

--insert into da.ispit (indeks, idpredmeta, oznakaroka, skgodina,
--                      status, poeni, ocena)
--values(20150320, 2010, 'jun2', 2017, 'o', 95, 10)@


--select *
--from student_polozeno
--where indeks=20150320@

--select *
--from predmet_polozeno
--where idpredmeta=2010@

--select *
--from student_polozeno
--where indeks=20152003@

--select *
--from predmet_polozeno
--where idpredmeta=1695@

--unos polozenog ispita za studenta i predmet o kojima ne postoje podaci u  tabelama
--student_polozeno i predmet_polozeno

--insert into da.ispit (indeks, idpredmeta, oznakaroka, skgodina,
--                      status, poeni, ocena)
--values(20152003, 1695, 'jun1', 2017, 'o', 95, 10)@

--select *
--from student_polozeno
--where indeks=20152003@

--select *
--from predmet_polozeno
--where idpredmeta=1695@

--brisanje okidaca i tabela 

--drop trigger novi_ispit@
--drop table student_polozeno@
--drop table predmet_polozeno@

