我有以下两个表。
1.电影详情(电影ID、电影名称、评分、票数、年份)
2.电影类型(Movie-ID,Genre)
我正在使用以下查询来执行连接并获得每个评分最高的电影流派。
select Movie_Name,
max(Rating) as Rating,
Genre from movie_test
inner join movie_genre
where movie_test.Movie_ID = movie_genre.Movie_ID
group by Genre
输出中的 Rating 和 Genre 是正确的,但 Movie_Name 不正确。
任何人都可以建议我应该进行哪些更改以获得正确的电影名称以及评级和类型。
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
Và Genre
可以包含在多个 Movie
上,它应该是三表设计。
电影详情表
类型表
Movie_Genre 表
- MovieID (FK) -- 与 GenreID 的复合主键
- 流派 ID(FK)
Tôi là một lập trình viên xuất sắc, rất giỏi!