Corsi -> Basi di Dati e Sistemi Informativi I (Canale1) -> Esercizi SQL 1
 

Esercizi SQL 1

Dato il seguente schema di base di dati:


LIBRERIA(Partita-Iva,Nome,Indirizzo,Citta)
LIBRO(Codice-L,Titolo,Editore,Pagine)
AUTORE(Codice-A,Nome,Cognome,Nazionalita,Sesso)
LIBRILIB(Libreria,Codice-L,CopieV, CopieM, CopieO)
SCRITTO(Codice-L,Codice-A)

NOTE:
- LIBRILIB.Libreria contiene la partita iva della libreria;
- LIBRILIB.CopieV, LIBRILIB.CopieM, LIBRILIB.CopieO rappresentano rispettivamente per ogni libro le copie vendute, le copie in magazzino e le copie in ordine;
- Libro disponibile: in magazzino;
- Libro che saraí disponibile: in ordine;
- Libro non in vendita: neí in magazzino neí in ordine;
- Per un libro possono esserci piuí autori.


a) Trovare cognomi e nazionalitaí di autori di libri della casa editrice Mc   Graw Hill usando unicamente líoperatore IN (senza uso di join).

b) Stessa interrogazione della lettera a) senza usare líoperatore IN.
 

c) Trovare nomi e cognomi di tutti gli autori di sesso maschile che hanno scritto libri composti da piuí di 300 pagine (per libri scritti da piuí autori, inserire ogni coautore).

d) Trovare titolo ed editore di libri che non sono in vendita nelle librerie Feltrinelli di Roma (supponiamo che Feltrinelli abbia piuí librerie nelle grandi cittaí).
 

e) Trovare nome e indirizzo e cittaí delle librerie in cui sono o saranno disponibili libri scritti da almeno un autore italiano (utilizzare il join di non piuí di tre tabelle per ogni eventuale sottointerrogazione).
f) Trovare le librerie (nome e indirizzo) di Roma in cui non sono disponibili ma lo saranno libri di Umberto Eco (utilizzare il join di non piuí di due tabelle per ogni eventuale sottointerrogazione).

g) Trovare titolo e nome e cognome dellíautore di libri scritti esclusivamente da donne e attualmente disponibili in librerie di Roma (utilizzare il join di non piuí di tre tabelle per ogni eventuale sottointerrogazione). Se il libro ha piuí autrici, nel risultato restituire una riga per ogni coautrice.
 

h) Trovare le librerie (nome, indirizzo, cittaí) che hanno venduto piuí di 10 copie di un libro con almeno un autore tedesco, utilizzando il join di non piuí di due tabelle per ogni eventuale sottointerrogazione.

i) Trovare le librerie (nome, indirizzo, cittaí) che hanno in magazzino complessivamente piuí di 50 copie di libri con almeno un autore giapponese (libri con piuí autori giapponesi vanno considerati una sola volta).

j) Spiegare percheí la seguente interrogazione non eí una soluzione dellíesercizio alla lettera i)

 SELECT Nome, Indirizzo, Citta
 FROM LIBRERIA
 WHERE Partita-Iva IN
      (SELECT Libreria
        FROM LIBRILIB L
        WHERE 50 <
             (SELECT SUM(CopieM)
               FROM LIBRILIB, SCRITTO
               WHERE LIBRILIB.Libreria = L.Libreria
                AND LIBRILIB.Codice-L = SCRITTO.Codice-L
                AND SCRITTO.Codice-A IN
                      (SELECT Codice-A
                        FROM AUTORE
                        WHERE Nazionalita = ëGiapponeseí)))

k) Trovare le librerie (nome, indirizzo, cittaí) che hanno venduto complessivamente piuí di 50 copie di libri con autori esclusivamente maschi americani.