Videoteca

Il problema

Schema relazionale

Rel_videoteca

ATTORE

IdAttore Contatore Chiave primaria
Cognome Testo Richiesto: sì
Consenti lunghezza zero: no
Indicizzato: sì
Nome Testo Richiesto: sì
Consenti lunghezza zero: no
Indicizzato: sì
DataNascita Data/ora Etichetta: Data di nascita
Nazione Testo
OscarVinti Numerico Etichetta: Oscar vinti
Valore predefinito: 0
Valido se: >=0 AND <=5
Foto Oggetto OLE
Notizie Memo

REGISTA

IdRegista Contatore Chiave primaria
Cognome Testo Richiesto: sì
Consenti lunghezza zero: no
Indicizzato: sì
Nome Testo Richiesto: sì
Consenti lunghezza zero: no
Indicizzato: sì
DataNascita Data/ora Etichetta: Data di nascita
Nazione Testo
OscarVinti Numerico Etichetta: Oscar vinti
Valore predefinito: 0
Valido se: >=0 AND <=5

FILM

IdFilm Contatore Chiave primaria
Titolo Testo Richiesto: sì
Consenti lunghezza zero: no
Indicizzato: sì
Anno Numerico >=1895 AND <=2013
Durata Numerico >=0
Giudizio Numerico >=1 AND <=10
Trama Memo
OscarVinti Numerico Etichetta: Oscar vinti
Valore predefinito: 0
Valido se: >=0 AND <=11
RegistaId Numerico Etichetta: Regista
AttoreId Numerico Etichetta: Attore protagonista

Query

Gli attori degli Stati Uniti

Rel_videoteca_1

SELECT    ATTORE.Nome, ATTORE.Cognome, ATTORE.DataNascita, ATTORE.OscarVinti
FROM      ATTORE
WHERE     ATTORE.Nazione = "USA"
ORDER BY ATTORE.Cognome, ATTORE.Nome;

I film con giudizio massimo

Rel_videoteca_2

SELECT   FILM.Titolo, FILM.Anno, FILM.Durata, FILM.OscarVinti,
         REGISTA.Nome AS [Nome regista], REGISTA.Cognome AS [Cognome regista]
FROM     FILM INNER JOIN REGISTA ON FILM.RegistaId = REGISTA.IdRegista
WHERE    Film.Giudizio = 5
ORDER BY Film.Titolo;

La filmografia dei registi

SELECT   REGISTA.Nome, REGISTA.Cognome, REGISTA.Nazione,
         FILM.Titolo, FILM.Anno, FILM.OscarVinti, FILM.Giudizio
FROM     FILM INNER JOIN REGISTA ON FILM.RegistaId = REGISTA.IdRegista
ORDER BY REGISTA.Cognome, REGISTA.Nome, FILM.Anno;

I registi, non degli Stati Uniti, che hanno diretto un film con

  • anno di uscita tra il 1995 e il 2010
  • vittoria all’Oscar
  • giudizio tra 4 e 5.
SELECT   REGISTA.Nome, REGISTA.Cognome, REGISTA.Nazione,
         FILM.Titolo, FILM.Anno, FILM.OscarVinti, FILM.Giudizio
FROM     FILM INNER JOIN REGISTA ON FILM.RegistaId = REGISTA.IdRegista
WHERE    (REGISTA.Nazione <> "USA") AND (FILM.Anno BETWEEN 1995 AND 2010) AND
         (FILM.OscarVinti > 0) AND ((FILM.Giudizio = 4) OR (FILM.Giudizio = 5))
ORDER BY REGISTA.Cognome, REGISTA.Nome, FILM.Anno;

La classifica dei registi per numero di Oscar vinti

SELECT   REGISTA.Nome, REGISTA.Cognome, REGISTA.DataNascita, REGISTA.Nazione, REGISTA.OscarVinti
FROM     REGISTA
ORDER BY REGISTA.OscarVinti DESC, REGISTA.Cognome, REGISTA.Nome;

Note

  • I nomi appaiono prima dei cognomi ma i record sono ordinati prima per cognome e poi per nome
  • Le classifiche sono ordinate in modo decrescente rispetto al campo numerico (Oscar vinti, film vincenti, …).

Se aggiungi una tabella NAZIONI e le chiavi esterne per la Nazionalità nelle tabelle ATTORE, FILM, REGISTA

  1. Elenco delle nazioni
  2. Numero di nazioni
  3. Elenco degli attori
  4. Elenco degli attori con film (per anno)
  5. Elenco dei registi
  6. Elenco degli registi con film (per anno)
  7. Elenco dei film
    SELECT Titolo, Anno, OscarVinti AS [Oscar vinti], NAZIONI.Nome AS Nazionalità
    FROM   FILM INNER JOIN NAZIONI ON FILM.NazioneId = NAZIONI.IdNazione
    ORDER  BY Titolo;
  8. Elenco dei film per numero di Oscar
    SELECT OscarVinti AS [Oscar vinti], Titolo, Anno, NAZIONI.Nome AS Nazionalità
    FROM   FILM INNER JOIN NAZIONI ON FILM.NazioneId = NAZIONI.IdNazione
    ORDER  BY OscarVinti DESC, Titolo;
  9. Numero totale di Oscar nei film
  10. Numero medio, massimo di Oscar nei film