-- ============================================================================
-- WWW:  http://www.dis.uniroma1.it/~calvanese/didattica/02-03-basididati/
--         esercitazioni/eser-2002-10-10/soluzioni/punto-4-sol.sql
-- ============================================================================
-- Prima esercitazione di laboratorio
-- Soluzione dell'esercizio 4
-- ============================================================================

-- 1) Trovare i figli di 'Franco'

select Figlio
from GENITORI
where Genitore='Franco';


-- 2) Trovare nome e reddito delle persone con meno di 30 anni.

select Nome, Reddito
from PERSONE
where Eta < 30;


-- 3) Trovare nome e reddito dei maschi con meno di 30 anni.

select Nome, Reddito
from PERSONE
where Eta < 30 AND Sesso = 'M';


-- 4) Trovare i genitori di persone che guadagnano piu` di 20 milioni.

select distinct Genitore
from PERSONE, GENITORI
where Nome = Figlio and Reddito > 20;


-- 5) Trovare la relazione che mostra per ogni persona i nonni

select P.Figlio as Nipote, N.Genitore as Nonno
from GENITORI P, GENITORI N
where P.Genitore = N.Figlio;


-- 6) Trovare le madri di persone che guadagnano piu` di 20 milioni.

select distinct Genitore as Madre
from PERSONE PF, GENITORI, PERSONE PM
where PF.Nome = Figlio and PM.Nome = Genitore and
      PM.Sesso = 'F' and PF.Reddito > 20;


-- 7) Trovare la relazione che mostra per ciascun figlio i rispettivi genitori
--    (Padre, Madre, Figlio).

select GP.Genitore as Padre, GM.Genitore as Madre, GP.Figlio
from GENITORI GP, GENITORI GM, PERSONE PP, PERSONE PM
where GP.Figlio = GM.Figlio and
      GP.Genitore = PP.Nome and PP.Sesso = 'M' and
      GM.Genitore = PM.Nome and PM.Sesso = 'F';
