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
Il y a un problème avec la conception de votre schéma. Si un Movie
peut avoir plusieurs Genre
ainsi que Genre
peut être contenu sur plusieurs Movie
, il devrait s'agir d'une conception à trois tables.
Tableau des détails du film
- ID de film (PK)
- Nom du film
- Classement des films
Tableau des genres
- Identifiant de genre (PK)
- Nom du genre
Tableau Film_Genre
- MovieID (FK) :clé primaire composée avec GenreID
- ID de genre (FK)