2

我需要为一个项目使用 Joins,但我忘记了如何使用它。现在这一切都在弄乱我的头,我无法弄清楚。

我有五个表,我需要加入所有这些表:

categories - id, name
movies_categories - movie_id, category_id
movies - id, title, description, release_date, cover_image
users - id, username, password
user_movies - user_id, movie_id, favorite, review, watch_date, rating

如您所见,该项目与电影相关,并且 user_movies 包含用户观看过的所有电影。我需要做的是获取某个用户看过的所有电影。因此,我需要每部电影的所有电影信息、用户名(这几乎是我需要用户提供的所有信息)以及 user_movies 中的一些列(除前两个之外的所有列)。我还需要将每部电影的所有类别组合成一个“变量”。我相信你可以使用 GROUP_CONCAT() 来做到这一点,我以前做过。

这是一项棘手的任务,我真的需要解决这个问题。如果有人可以帮助我,我将不胜感激。

4

1 回答 1

5

如果您提供了表模式(创建表脚本),我可以在 sqlfiddle 上测试查询,所以我无法测试,但我认为这个查询是您需要的。

select u.username, u.password
     , um.user_id, um.movie_id, um.favorite
     , um.review, um.watch_date, um.rating 
     , m.movie_title, m.description, m.release_date, m.cover_image
     , mc.category_id
     , group_concat(distinct c.name) as movie_categorynames
from user_movies um
inner join users u on u.id = um.user_id
inner join movies m on m.id = um.movie_id
inner join movies_categories mc on mc.movie_id = um.movie_id
inner join categories c on c.id = mc.category_id
where um.user_id=1
group by um.user_id



USERNAME    PASSWORD    USER_ID MOVIE_ID    FAVORITE    REVIEW  WATCH_DATE  RATING  MOVIE_TITLE DESCRIPTION RELEASE_DATE    COVER_IMAGE CATEGORY_ID MOVIE_CATEGORYNAMES
nike    5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8    1   3   0   This is my movie review!    51351   7   It's Kind of a Funny Story  A clinically depressed teenager gets a new start after he checks himself into an adult psychiatric ward.    2010    8d27232902780886db032afb8d4883a7.jpg    5   Comedy,Drama
于 2012-04-20T18:44:34.807 回答