我有三个表:用户,电影,评分。如何创建一个MySQL查询,返回两个指定用户看过的电影列表,同时提供有关电影的信息和两个用户的单独评级?
我创建了一个带有一些示例数据库的SQLFiddle here
用户的预期结果A = 1且B = 2: 两人都看过The Shining和Interstellar,所以每个人都有一个带有电影信息的条目,加上用户ID和评分都在结果中。其他电影和评级不包括在内。
+----+-------+-------+---------+---------+--------------+
| id | UserA | UserB | RatingA | RatingB | Name |
+----+-------+-------+---------+---------+--------------+
| 1 | 1 | 2 | 10 | 9 | The Shining |
| 2 | 1 | 2 | 9 | 7 | Interstellar |
+----+-------+-------+---------+---------+--------------+
答案 0 :(得分:1)
您需要自我加入,使用别名来区分每个用户..
SELECT u1.*, u2.*, m.Name
FROM rating u1
JOIN rating u2
ON u1.MovieID = u2.movieID
AND u1.UserID = 1
AND u2.UserID = 2
JOIN Movies m
ON u1.MovieID = m.ID