Cors
i -> Basi di Dati e Sistemi Informativi I (Canale1)
-> Esercizi SQL 2
Esercizi SQL 2
Dato il seguente schema di base di dati:
DISCO(Codice, Cantante, Titolo, CodiceProd)
PRODUTTORE(Sigla, Nome, Sede)
VENDITA(CodiceDisco, Anno, Copie)
NOTE:
- DISCO.CodiceProd eí la sigla del produttore;
- PRODUTTORE.Sede eí la cittaí in cui opera il produttore;
- Ogni produttore ha una sola sigla e opera in una sola sede;
- Ogni disco ha un unico produttore;
- Per ogni disco le vendite sono divise per anno (per ogni disco ci
sono piuí entrate della tabella VENDITA con anno e copie vendute in quellíanno).
a) Trovare i codici di dischi di cui non sono noti i dati di vendita.
b) Trovare i cantanti che hanno inciso dischi con produttori che si trovano in sedi diverse (utilizzare il join di non piuí di due tabelle per ogni eventuale sottointerrogazione).
c) Trovare cantanti che hanno inciso dischi solo con produttori che si trovano in una stessa sede e visualizzare la sede nel risultato (utilizzare il join di non piuí di due tabelle per ogni eventuale sottointerrogazione).
d) Spiegare percheí la seguente interrogazione non eí una soluzione dellíesercizio alla lettera c)
SELECT D.Cantante, P.Sede
FROM DISCO D, PRODUTTORE P
WHERE D.CodiceProd = P.Sigla
AND EXISTS
(SELECT *
FROM DISCO
D1, PRODUTTORE P1
WHERE
D1.CodiceProd = P1.Sigla
AND D1.Cantante
= D.Cantante
AND P1.Sede
= P.Sede
AND
D1.Codice < > D.Codice)
e) Trovare cantanti che hanno inciso dischi con esattamente due produttori diversi e visualizzare nel risultato i cantanti con le rispettive coppie di nomi di produttori.
f) Spiegare percheí la seguente interrogazione non eí una soluzione dellíesercizio alla lettera e)
SELECT D1.Cantante, P1.Nome, P2.Nome
FROM DISCO D1, PRODUTTORE P1
WHERE D1.CodiceProd = P1.Sigla
AND EXISTS
(SELECT *
FROM DISCO
D2, PRODUTTORE P2
WHERE
D2.CodiceProd = P2.Sigla
AND D2.Cantante
= D1.Cantante
AND P2.Sigla
< P1.Sigla)
AND NOT EXISTS
(SELECT *
FROM DISCO
D3
WHERE
D3.Cantante = D1.Cantante
AND D3.CodiceProd
< > D1.CodiceProd
AND D3.CodiceProd
< > D2.CodiceProd)
g) Trovare titolo, cantante e numero totale di copie vendute di dischi di cui siano state vendute complessivamente piuí di 100.000 copie.
h) Trovare i dischi (titolo, cantante e somma di copie vendute) che hanno venduto complessivamente il numero di copie piuí alto.
i) Trovare gli anni in cui sono stati venduti piuí dischi e, relativamente
a questi, trovare i dischi che hanno venduto piuí copie in quegli anni
(nel risultato titolo ed autore del disco, copie vendute e anno).