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
Có điều gì đó sai với thiết kế giản đồ của bạn. Nếu một Movie
có thể có nhiều Genre
cũng như Genre
có thể chứa trên nhiều Movie
, nó phải là một thiết kế ba bảng.
Bảng MovieDetails
- MovieID (PK)
- MovieName
- Đánh giá phim
Bảng thể loại
- GenreID (PK)
- GenreName
Bảng Movie_Genre
- MovieID (FK) - khóa chính kết hợp với GenreID
- GenreID (FK)