Scusa ma di quali slide stai parlando?
Di quelle che ha reso disponibile il mio prof.
Ah benissimo.
Io ho serissimi dubbi che quella query possa funzionare. Per come la leggo io, estrae i nomi dei registi che non hanno nemmeno un film nel quale hanno recitato senza esserne registi. Questo significa che qualsiasi regista non abbia recitato in nessun film viene estratto, il che non è ciò che chiede il problema.
Quando ho tempo provo a buttare giù una query. Nel frattempo potresti verificare quello che ho scritto creando una piccola base dati con le casistiche che ho esemplificato e vedere cosa succede usando quella query![]()
Ultima modifica di luca200; 07-06-2016 a 14:15
Non riesco ad eseguirla perché mi dà un errore di sintassi che onestamente non riesco ad individuare!
mysql> select nome
-> from regista r1
-> where (not exists (select * from film f
-> where ((f.titolo=any
-> select r.titolofilm
-> from recitazione r
-> where (r.nomeattore=r1.nome)) and (r1.nome<>f.regista))));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select r.titolofilm
from recitazione r
where (r.nomeattore=r1.nome)) and (r1.nom' at line 5
Ultima modifica di Jamie04; 07-06-2016 a 15:23
Sei molto più bravo di me allora perché l'avevi capito solo leggendola, io ho dovuto provarla!
Secondo te questa versione può funzionare? Non la prosso provare perché Mysql non supporta l'EXCEPT.
select distinct nomeattore as regista
from recitazione join FilmDirettiDaUnRegista on (titolofilm=titolo)
where (nomeattore=regista)
except
select nomeattore
from recitazione join FilmDirettiDaUnRegista on (titolofilm=titolo)
where (nomeattore<>regista)
La seconda select dovrebbe escludermi i registi che hanno recitato in film diretti da altri registi. Almeno l'idea è quella...
Devo dire che non sarebbe nemmeno così strano che la query non funzioni...ho già trovato diversi (piccoli) errori nelle slide!! Ok proverò a creare un minidatabase per vedere se la query funziona.
dopo any devi aggiungere una parentesi e chiuderla in fondo
Hai ragione mi sembra che la query non funzioni. Mi restituisce tutti i registi. Cioè questo mette nelle slide esempi che non vanno...
L'unica cosa di cui non sono sicura è concettualmente un regista deve essere inserito anche nella tabella attore, qualora ovviamente sia anche un attore? Io non l'ho fatto ma ai fini della query è ininfluente visto che la tabella attore non viene utilizzata.
In realtà, nel caso descritto le tabelle regista e attore sono completamente inutili.
Per come è strutturato il db, sia registi che attori hanno il nome come chiave, e l'unico dato oltre alla chiave è la data di nascita, che però non è mai utilizzata nel problema. Quindi in realtà puoi lavorare semplicemente con i dati delle altre due tabelle, che contengono i nomi