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
Há algo errado com o design do seu esquema. Se um
Movie
pode ter muitos Genre
bem como Genre
pode conter em muitos Movie
, deve ser um design de três tabelas. Tabela de detalhes do filme
- MovieID (PK)
- Nome do filme
- Classificação de filmes
Tabela de gênero
- GenreID (PK)
- GenreName
Tabela Movie_Genre
- MovieID (FK) -- chave primária composta com GenreID
- GenreID (FK)