braian
14-08-2008, 13:46
Sto studiando per dare l' esame di basi di dati.
Non capisco come scrivere una query su quasto database:
Attori(CodiceAtt, Nome, AnnoNascita);
AttoriFilm(CodiceAtt*, CodiceFilm*)
Film(CodiceFilm, Titolo, AnnoProduzione, Regista)
Proiezioni(CodiceFilm*, CodiceSala*, Incasso, DataProiezione)
Sala(CodiceSala, Posti, Nome, Citta)
Dove le sottolineature denotano chiavi primarie e gli asterischi chiavi esterne.
La query che devo scrivere è la seguente:
Per ogni film in cui appaiono due attori diversi nati lo stesso anno trovare il codice del
film ed i nomi dei due attori
La soluzione che mi viene data è questa ma non è compatibile con i DBMS che uso non potendo definire le istanze a1,a2,af1,af2.
SELECT af1.CodiceFilm, a1.Nome, a2.Nome
FROM Attori a1, AttoriFilm af1, AttoriFilm af2, Attori a2
WHERE a1.CodiceAtt = af1.CodiceAtt AND af1.CodiceFilm = af2.CodiceFilm
AND af2.CodiceAtt = a2.CodiceAtt AND a1.AnnoNascita = a2.AnnoNascita
AND a1.CodiceAtt < a2.CodiceAtt ;
Come si scrive?
:help:
Non capisco come scrivere una query su quasto database:
Attori(CodiceAtt, Nome, AnnoNascita);
AttoriFilm(CodiceAtt*, CodiceFilm*)
Film(CodiceFilm, Titolo, AnnoProduzione, Regista)
Proiezioni(CodiceFilm*, CodiceSala*, Incasso, DataProiezione)
Sala(CodiceSala, Posti, Nome, Citta)
Dove le sottolineature denotano chiavi primarie e gli asterischi chiavi esterne.
La query che devo scrivere è la seguente:
Per ogni film in cui appaiono due attori diversi nati lo stesso anno trovare il codice del
film ed i nomi dei due attori
La soluzione che mi viene data è questa ma non è compatibile con i DBMS che uso non potendo definire le istanze a1,a2,af1,af2.
SELECT af1.CodiceFilm, a1.Nome, a2.Nome
FROM Attori a1, AttoriFilm af1, AttoriFilm af2, Attori a2
WHERE a1.CodiceAtt = af1.CodiceAtt AND af1.CodiceFilm = af2.CodiceFilm
AND af2.CodiceAtt = a2.CodiceAtt AND a1.AnnoNascita = a2.AnnoNascita
AND a1.CodiceAtt < a2.CodiceAtt ;
Come si scrive?
:help: