use STUDIJE go --UGNJEZDENI UPITI (BEZ KORELISANIH) -- 1. spisak nastavnika koji nisu anga�ovani. select * from nastavnici where Snast not in (select snast from Angazovanje) -- 2. svi studenti koji dolaze iz gradova iz kojih je doslo vise od 2 studenta select * from nastavnici where Snast not in (select snast from Angazovanje) -- 3. Broj indeksa, godina upisa, ocena studenata cije su ocene manje od svih ocena koje je dao nastavnik sa "s" u imenu. (ALL, ANY) -- I nacin select indeks, upisan, ocena from prijave where ocena < all ( select ocena from prijave where Snast = ANY ( select snast from Nastavnici where Imen like '%s%' ) ) -- II nacin (ALL, IN) select indeks, upisan, ocena from prijave where ocena < all ( select ocena from prijave where Snast in ( select snast from Nastavnici where Imen like '%s%' ) ) --KORELISANI UGNJEZDENI UPITI -- 4. spisak nastavnika i predmeta (samo sifre) koji dele predmet sa jos nekim -- I nacin (IN) select Snast, Spred from Angazovanje a1 where Spred in ( select Spred from Angazovanje a2 where a1.Snast <> a2.Snast ) -- II nacin (EXISTS) /******************************** EXISTS **************************** Sintaksa: WHERE [NOT] EXISTS ( pod-upit ); pod-upit Predstavlja SELECT upit koji ako vrati najmanje jednu n-torku u svom rezultujucem setu klauzula EXISTS ce se oceniti kao TRUE, u suprotnom, ako ne vrati ni jednu n-torku EXISTS klauzula ce se oceniti kao FALSE. Napomena: SQL upiti koji koriste EXISTS uslov su veoma neefikasni jer pod-upit se izvrsava za svaki red u spoljasnjem upitu. ***********************************************************************/ select a1.Snast, a1.Spred from Angazovanje a1 where exists ( select * from Angazovanje a2 where a1.Snast <> a2.Snast and a1.Spred = a2.Spred ) -- 5. spisak nastavnika koji nisu anga�ovani, drugi nacin - exists select * from Nastavnici n where not exists ( select * f rom Angazovanje a where a.Snast = n.Snast ) -- 6. Spisak studenata koji imaju bar jedan polozen ispit select * from Studenti s where exists ( select * from Prijave p where ocena > 5 and s.Indeks = p.Indeks and p.Upisan = s.Upisan ) -- 7. Spisak studenata koji imaju prosek veci od 7.5 select * from Studenti s where exists ( select Indeks, Upisan from prijave where ocena > 5 and s.Indeks = Indeks and s.Upisan = Upisan group by Indeks, Upisan -- da li grupisanje moze da se izbaci ?! having avg(ocena * 1.0) > 7.5 )