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
に含めることができます 、3つのテーブルのデザインである必要があります。
MovieDetailsテーブル
- MovieID(PK)
- MovieName
- MovieRating
ジャンルテーブル
- GenreID(PK)
- GenreName
Movie_Genreテーブル
- MovieID(FK)-GenreIDを持つ複合主キー
- GenreID(FK)