SOLUZIONI ESERCIZI CAPITOLO 5
1) Possiamo ottenere quanto richiesto utilizzando una delle seguenti select.
La seconda select utilizza usa una sintassi non implementabile tramite SQL Plus 8.0; notiamo che i nomi dei campi specificati in ON sono preceduti dal nome della tabella a cui appartengono.
SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA
FROM ISCRITTI, FAMILIARI
WHERE MATRICOLA = MATRICOLA_DEL_PARENTE_ISCRITTO;SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA
FROM ISCRITTI INNER JOIN FAMILIARI
ON ISCRITTI.MATRICOLA = FAMILIARI.MATRICOLA_DEL_PARENTE_ISCRITTO;
2)
SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA
FROM ISCRITTI LEFT JOIN FAMILIARI
ON ISCRITTI.MATRICOLA = FAMILIARI.MATRICOLA_DEL_PARENTE_ISCRITTO;
3) Possiamo utilizzare una delle seguenti select.
SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA
FROM ISCRITTI INNER JOIN FAMILIARI
ON
(ISCRITTI.MATRICOLA = FAMILIARI.MATRICOLA_DEL_PARENTE_ISCRITTO AND ETA < 20);SELECT ISCRITTI.NOME, FAMILIARI.NOME, PARENTELA
FROM ISCRITTI, FAMILIARI
WHERE ISCRITTI.MATRICOLA = FAMILIARI.MATRICOLA_DEL_PARENTE_ISCRITTO
AND ETA < 20;
4) Una possibile soluzione del problema è la seguente select:
SELECT MARCHE.COD_CASA, NOME_CASA, CITTA, NOME_AUTO
FROM MARCHE, MODELLI
WHERE MARCHE.COD_CASA = MODELLI.COD_CASA
AND CILINDRATA BETWEEN 1000 AND 2000
AND TIPO = 'SPORT';
Possiamo ottenere lo stesso risultato utilizzando le parole chiave INNER JONI e/o adoperare gli operatori di confronto classici invece di BETWEEN e END.
5) Possiamo utilizzare una delle seguenti select.
SELECT MARCHE.COD_CASA, NOME_CASA
FROM MARCHE, MODELLI
WHERE MARCHE.COD_CASA = MODELLI.COD_CASA
AND TIPO = 'SPORT'
GROUP BY MARCHE.COD_CASA, NOME_CASA
HAVING COUNT(*) > 2;SELECT MARCHE.COD_CASA, NOME_CASA
FROM MARCHE INNER JOIN MODELLI
ON
(MARCHE.COD_CASA = MODELLI.COD_CASA
AND TIPO = 'SPORT')
GROUP BY MARCHE.COD_CASA, NOME_CASA
HAVING COUNT(*) > 2;
6) Possiamo utilizzare una delle seguenti soluzioni:
SELECT NUMERO
FROM TABELLA1
INTERSECT
SELECT NUMERO
FROM TABELLA2;
La parola chiave INTERSECT non è implementata da Access.
SELECT TABELLA1.NUMERO
FROM TABELLA1, TABELLA2
WHERE TABELLA1.NUMERO = TABELLA2.NUMERO;SELECT TABELLA1.NUMERO
FROM TABELLA1 INNER JOIN TABELLA2
ON TABELLA1.NUMERO = TABELLA2.NUMERO;
Quest’ultima sintassi non è accettata da SQL Plus 8.0
pag. 19 di 20 |