如何在MySQL中找到常见项并获取其各自的用户值?

时间:2018-04-16 14:49:27

标签: mysql sql

我有三个表:用户,电影,评分。如何创建一个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 |
+----+-------+-------+---------+---------+--------------+

1 个答案:

答案 0 :(得分:1)

您需要自我加入,使用别名来区分每个用户..

SQL DEMO

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