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
V návrhu schématu je něco špatně. Pokud Movie
může mít mnoho Genre
stejně jako Genre
může být obsaženo na mnoha Movie
, měl by to být design se třemi tabulkami.
Tabulka podrobností o filmu
- MovieID (PK)
- Název filmu
- Hodnocení filmů
Tabulka žánrů
- GenreID (PK)
- GenreName
Tabulka filmových žánrů
- MovieID (FK) – složený primární klíč s GenreID
- GenreID (FK)