-2

我正在编写一个应用程序,人们可以在其中上传他们拥有的电影列表。

我的数据库可能具有以下结构:

用户

  • UserID - 唯一标识符
  • Name - 用户的全名
  • 电子邮件 - 用户的电子邮件

电影

  • UserID - 拥有这部电影的用户
  • MovieID - 电影唯一标识符(我目前正在使用 IMDB 的代码)

所以“电影”与“用户”是多对一的关系

我想做的是推荐一个随机“电影伙伴”的用户。基本上,我想找到拥有同一部电影的 2 个用户(所以我试图匹配 2 个用户的列表以查找匹配的电影),然后向他显示类似于“嘿,XYZ 是 The Dark Knight Rises 的粉丝”的消息也一样!”

匹配应该是随机的,对已经看过的建议有一个简单的过滤器(我不希望用户为同一个好友和电影两次获得相同的建议,但是可以为不同的电影向他推荐同一个好友 - 假设他们都拥有两部不同的电影)。

我不知道如何使用 MySQL 执行这种匹配。如果一个更合适的话,我也愿意接受其他关于数据库的建议(我听说过图形数据库,但我自己从未使用过)

谢谢。

4

1 回答 1

1

查找具有相同电影 ID 的用户非常简单,只需三个 JOIN

FROM
    User u
    INNER JOIN movie m
    ON u.UserID = m.UserID
    INNER JOIN moive BuddyMovie
    ON m.moiveID = BuddyMovie.MovieID
       and u.UserID <> Buddy.UserID --Don't want to be your own Buddy
    INNER JOIN User BuddyUser
    ON BuddyMovie.UserID = BuddyUser.UserID
WHERE
    u.UserID = 123  -- For a given user
    and m.MovieID = 345 -- Optionally For a given movie

获取一个你只需要添加的随机用户ORDER BY RAND()

如果你只想要两个,只需添加LIMIT 2

确保您没有得到相同的好友两次将要求您跟踪哪些好友都已准备好显示,这超出了单个问题的范围。

于 2013-01-01T07:08:45.317 回答