Databázy - cvičenie - 8. týždeň

Created: 2008-11-12 - 17:24


use poliklinika
--1) pomocou exists zistite id a mena pacientov, ktori uz boli u kardiologa
select p.idp, p.krstne
	from pacienti p
	where exists (select N.idp
		from navstevy N
			where n.idl = 3 and (p.idp = n.idp))

--2) najdite pacientov, ktori maju vyssi mesacny prijem ako adam
select * from pacienti p where p.mesPrijem > 
(select p.mesPrijem from pacienti p where p.krstne = 'adam')

--3) a-d)
--a) najdite zoradene id tych, ktori uz niekedy zaplatili poplatok aspon 300
select idp from navstevy
where poplatok >= 300 order by idp 
--b) najdite mena a prijem tych co niekedy zaplatili poplatok aspon 300
select distinct p.krstne,p.mesPrijem from pacienti p
	join navstevy n on p.idp = n.idp
where n.poplatok >= 300
--c) najdite minimalny prijem tych, ktori uz niekedy zaplatili poplatok aspon 300
select min(mesPrijem) from pacienti p
join navstevy n on p.idp = n.idp
where poplatok>=300
--alebo alternativne cez b) ako vnutorny dopyt
--d) najdite mena pacientov, ktori zarabaju aspon tolko ako minimalny
--	 prijem tych, ktori uz niekedy zaplatili poplatok aspon 300
select * from pacienti where mesPrijem >= ALL
(select min(mesPrijem) from pacienti p
join navstevy n on p.idp = n.idp
where poplatok>=300)
--e) Najdite mena pacientov, ktori zarabaju aspon tolko ako
--   najvacsi z prijmov tych, ktori uz niekedy zaplatili poplatok aspon 300.
select * from pacienti where mesPrijem >= ALL
(select mesPrijem from pacienti p
join navstevy n on p.idp = n.idp
where poplatok>=300 and mesPrijem is not null)