我需要将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()来做到这一点,我以前做过。
这是一个棘手的任务,我真的需要了解这一点。如果有人能帮助我,我会很感激。
答案 0 :(得分: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