-- ===========================================================================
-- Prima esercitazione di laboratorio su SQL
-- 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.

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.

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';
