我有一个 php 文件查询一个 mySql 数据库,该数据库在一个表上设置了电影,在另一个表上设置了 movieRatings。我想计算特定电影的“5 星”、“4 星”等评级的数量。我的查询有效,但是它非常慢,因为我意识到对于我要查找的每部电影,它会遍历整个 movieRatings 表 5 次。
我的查询:
$sql = "SELECT *
FROM MOVIE_INFO,
(SELECT count(ratingValue) as star5 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 5 ) SUB,
(SELECT count(ratingValue) as star4 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 4 ) SUB1,
(SELECT count(ratingValue) as star3 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 3 ) SUB2,
(SELECT count(ratingValue) as star2 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 2 ) SUB3,
(SELECT count(ratingValue) as star1 FROM MOVIE_RATINGS2 WHERE itemID=$b[0] AND ratingValue = 1 ) SUB4
WHERE movieID = $b[0]";
我想如果我可以从该特定电影的电影评级中提取一次子集,它会大大加快速度,但我不记得如何做到这一点。