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
Нещо не е наред с дизайна на вашата схема. Ако е Movie
може да има много Genre
както и Genre
може да се съдържа в много Movie
, трябва да бъде дизайн с три маси.
Таблица с подробности за филма
- MovieID (PK)
- Име на филма
- Оценка на филми
Таблица с жанрове
- Идентификатор на жанра (PK)
- Име на жанр
Таблица за жанрове на филми
- MovieID (FK) – комбиниран първичен ключ с GenreID
- Идентификатор на жанра (FK)