PDA

View Full Version : [MySQL] Differenze tra query


Cyber_X
25-01-2016, 14:37
Salve,
ho questo schema relazionale:
ATTORI (CodAttore, Nome, AnnoNascita, Nazionalità);
RECITA (CodAttore*, CodFilm*)
FILM (CodFilm, Titolo, AnnoProduzione, Nazionalità, Regista, Genere)
PROIEZIONI (CodProiezione, CodFilm*, CodSala*, Incasso, DataProiezione)
SALE (CodSala, Posti, Nome, Città)

N.B. gli asterischi indicano le chiavi esterne

Devo effettuare la seguente query:

I titoli dei film che non sono mai stati proiettati a Pisa

Avendo 3 soluzioni non riesco a capire la differenza tra queste

1)
select f.Titolo
from film as f join proiezioni as p on (f.CodFilm = p.CodFilm) join sale as s on (p.CodSala = s.CodSala)
where s.Citta <> 'Pisa'

2)
SELECT f.Titolo
FROM Film f
WHERE not exists (SELECT *
FROM Proiezioni p, Sala s
WHERE s.Città=”Pisa” and f.CodFilm=p.CodFilm and p.CodSala =s.CodSala)

3)
SELECT f.Titolo
FROM Film f
WHERE “Pisa” not in (SELECT s.Città
FROM Proiezioni p, Sala s
WHERE f.CodFilm = p.CodFilm and p.CodSala =s.CodS)

mi aiutereste a capire la differenza tra la prima e le restanti due?
Sono la stessa cosa?

Cyber_X
25-01-2016, 18:29
grazie per la risposta... Le Altre due quindi sono giuste?
Come potrei capire la differenza schematicamente? Perche eliminando le proiezioni che sono state fatte a Pisa, non sto eliminando appunto quelle che non sono mai state fatte a pisa?