SELECT g.*, d.*
FROM MovieGenre g
INNER JOIN MovieDetail d
ON g.MovieID = d.MovieID
INNER JOIN
(
SELECT a.Genre, MAX(b.Rating) maxRating
FROM MovieGenre a
INNER JOIN MovieDetail b
ON a.MovieID = b.MovieID
GROUP BY a.Genre
) sub ON g.Genre = sub.Genre AND
d.rating = sub.maxRating
C'è qualcosa di sbagliato nella progettazione dello schema. Se un Movie
può avere molti Genre
così come Genre
può essere contenuto in molti Movie
, dovrebbe essere un design a tre tavoli.
Tabella MovieDetails
- MovieID (PK)
- NomeFilm
- Classificazione dei film
Tabella dei generi
- ID Genere (PK)
- Nomegenere
Tabella Movie_Genere
- MovieID (FK) -- chiave primaria composta con GenreID
- ID Genere (FK)