MySql将multiply group附加到用户

时间:2012-01-14 10:30:41

标签: mysql database-design

我有一个用户表和电影表,每个用户可以观看一部电影。

现在我想找到观看特定电影的所有用户, 我的表在MySql中应该怎么样?

1 个答案:

答案 0 :(得分:1)

要执行此操作,您需要3个表。前两个是用户和电影,他们会以非常基本的形式看起来像这样:

user
  id
  name

movie
  id
  title

由于许多用户可以观看很多电影,并且同一部电影可以被多个用户观看,因此那里有多对多的关系。要在MySQL中定义这样的关系,你需要一个名为连接表的第三个表,它知道哪个用户观看了哪个电影(我称之为user_movies,但你可能想要使用不同的名字):

user_movies
  user_id
  movie_id

要知道谁观看了一部名为Spaceballs的电影,你需要这样的查询:

SELECT u.name FROM user u 
  JOIN user_movies um ON um.user_id = u.id 
  JOIN movie m ON um.movie_id = m.id
    WHERE m.title = 'Spaceballs'