2011-04-30 135 views
0

我有三个表格:user,friend_recommendation和movie。 我想获得推荐这部电影给我的人的名字,以及电影表中的电影信息和friend_recommendation表中的评论。我该怎么做呢?如何使用单个查询查询多个表格

假设用户表具有名称作为属性,电影表具有电影标题作为属性,并且friend_recommendation具有UID(推荐用户),FID(推荐用户)和COMMENT(什么是来自UID的评论FID)

它甚至可以在一个查询中做到这一点?

+0

我认为你还需要friend_recommendation表中的电影参考 – Dalen 2011-04-30 22:22:56

+0

而用户表需要一个'id'字段,而不仅仅是'name',但除此之外你似乎需要'加入'所有三个表并给出一个合适的WHERE条款。 – 2011-04-30 22:23:37

回答

2

所以三个表,基本上是与这些字段(大大简化):

users (userId, name) 
movies (movieId, movieInfo) 
recommendations (fromUserId, toUserId, movieId, comment) 

SELECT fromUser.name, toUser.name, m.movieInfo, r.comment 
FROM recommendations r 
INNER JOIN movies m ON m.movieId = r.movieId 
INNER JOIN users fromUser ON r.fromUserId = fromUser.userId 
INNER JOIN users toUser ON r.toUserId = toUser.userId 
WHERE r.toUserId = << my user id, or whatever your criteria are >> 

编辑回应下面的评论:另外检索名/用户的详细信息,电影推荐就像再次加入用户表一样简单。您可以在JOIN中看到我们从users中选择了两次。

+0

真棒..从0-10的速率你觉得这个查询有多复杂? – alexander 2011-04-30 22:35:16

+0

@alexander:我会给它10分之2 ...为什么? – nickf 2011-04-30 22:37:56

+0

如果我需要推荐人和推荐人的名字,该怎么办?我认为它改变了整个事情? – alexander 2011-04-30 22:38:24