|
Tratto da: AA. VV. SQL, il linguaggio per le
basi di dati - HOEPLI
Schema relazionalePaternità(cognome_padre, nome_padre, cognome_figlio, nome_figlio) Maternità(cognome_madre, nome_madre, cognome_figlio, nome_figlio) QueryTutte le coppie figlio-genitore SELECT nome_figlio, cognome_figlio, nome_madre, cognome_madre
FROM Maternità
UNION SELECT nome_figlio, cognome_figlio, nome_padre, cognome_padre
FROM Paternità;
Le coppie figlio-genitore con etichette appropriate SELECT nome_figlio AS Nome, cognome_figlio AS Cognome,
nome_madre AS [Nome genitore], cognome_madre AS [Cognome genitore]
FROM Maternità
UNION SELECT nome_figlio, cognome_figlio, nome_padre, cognome_padre
FROM Paternità;
I figli (senza ripetizioni) SELECT nome_figlio, cognome_figlio
FROM Maternità
UNION SELECT nome_figlio, cognome_figlio
FROM Paternità;
I cognomi di tutti, ordinati SELECT cognome_padre as COGNOME
FROM Paternità
UNION SELECT cognome_figlio
FROM Paternità
UNION SELECT cognome_madre
FROM Maternità
UNION SELECT cognome_figlio
FROM Maternità
ORDER BY COGNOME;
I genitori con numero di figli SELECT cognome_madre AS [Cognome genitore], nome_madre AS [Nome genitore],
COUNT(*) AS [Numero figli]
FROM Maternità
GROUP BY cognome_madre, nome_madre
UNION SELECT cognome_padre, nome_padre, COUNT(*)
FROM Paternità
GROUP BY cognome_padre, nome_padre;
I genitori con numero di figli, ordinati per cognome e nome SELECT cognome_madre AS [Cognome genitore], nome_madre AS [Nome genitore],
COUNT(*) AS [Numero figli]
FROM Maternità
GROUP BY cognome_madre, nome_madre
UNION SELECT cognome_padre, nome_padre, COUNT(*)
FROM Paternità
GROUP BY cognome_padre, nome_padre
ORDER BY [Cognome genitore], [Nome genitore];
I genitori con almeno 2 figli SELECT cognome_madre AS [Cognome genitore], nome_madre AS [Nome genitore],
COUNT(*) AS [Numero figli]
FROM Maternità
GROUP BY cognome_madre, nome_madre
HAVING COUNT(*)>1
UNION SELECT cognome_padre, nome_padre, COUNT(*)
FROM Paternità
GROUP BY cognome_padre, nome_padre
HAVING COUNT(*)>1;
I padri con più figli della signora... SELECT cognome_padre, nome_padre, count(*) AS [Numero figli]
FROM Paternità
GROUP BY cognome_padre, nome_padre
HAVING COUNT(*)>(SELECT COUNT(*)
FROM Maternità
WHERE cognome_madre=[Cognome madre?] AND
nome_madre=[Nome madre?]);
La nonna paterna di... SELECT cognome_madre AS [Cognome nonna paterna], nome_madre AS [Nome nonna paterna]
FROM Maternità
WHERE cognome_figlio=(SELECT cognome_padre
FROM Paternità
WHERE cognome_figlio="Cognome" AND
nome_figlio="Nome")
nome_figlio=(SELECT nome_padre
FROM Paternità
WHERE cognome_figlio="Cognome" AND
nome_figlio="Nome"); |
|