如何使用单个查询查询多个表

时间:2011-04-30 22:18:52

标签: mysql sql

我有三个表:user,friend_recommendation和movie。 我想得到推荐这部电影的人的名字,以及电影表中的电影信息,以及friend_recommendation表中的评论。我该怎么做呢?

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

甚至可以在一个查询中执行此操作吗?

1 个答案:

答案 0 :(得分: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 >>

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