ESERCIZI SVOLTI IN CLASSE NELLA LEZIONE DEL 12/10/2005 -- 1) Trovare nome ed eta' delle madri di persone che guadagnano piu` di 20. select m.nome, m.eta from persone m, maternita t, persone f where m.nome = t.madre and f.nome = t.figlio and f.reddito > 20 -- 2) Trovare le nonne da parte di madre delle persone maggiorenni select n.madre from maternita n, maternita m, persone f where n.figlio = m.madre and m.figlio = f.nome and f.eta >= 18 -- 3) Delle persone con entrambi i genitori memorizzati, restituire nome, padre e madre select m.figlio, p.padre, m.madre from maternita m, paternita p where m.figlio = p.figlio -- 3bis) Delle persone restituire nome ed eventuali padre e madre select m.figlio, p.padre, m.madre from maternita m full outer join paternita p on m.figlio = p.figlio --oppure se il DBMS non mette a disposizione il full aoter join select m.figlio, p.padre, m.madre -- from maternita m right outer join paternita p on m.figlio = p.figlio union select m.figlio, p.padre, m.madre from maternita m left outer join paternita p on m.figlio = p.figlio -- 4) Trovare i figli (in comune) di Franco e Maria select m.figlio from maternita m, paternita p where m.figlio = p. figlio and m.madre = 'Maria' and p.padre = 'Franco' -- 5) Trovare i fratelli da parte di madre di 'Maria' select m2.figlio from maternita m, maternita m2 where m.madre = m2.madre and m.figlio = 'Maria' and m2.figlio <> 'Maria' -- 6) Per ciascun padre trovare l'eta media dei figli select p.padre, avg(f.eta) as etamediafigli from paternita p, persone f where f.nome = p.figlio group by p.padre -- 7) Per ciascun padre, restituire nome, eta ed l'eta media dei figli select p.nome, p.eta, avg(f.eta) as etamediafigli from paternita t, persone p, persone f where p.nome = t.padre and f.nome = t.figlio group by p.nome, p.eta -- 8) Per ciascun padre, restituire nome, eta ed numero figli select p.nome, p.eta, count(*) as numerofigli from persone p, paternita t where p.nome = t.padre group by p.nome, p.eta -- 9) Restituire i nome ed eta dei padri con piu di due figli maggiorenni select p.nome, p.eta from persone p, paternita t, persone f where p.nome = t.padre and t.figlio = f.nome and f.eta >= 18 group by p.nome, p.eta having count(t.figlio) > 2