Использование нескольких соединений и group_concat() в MySQL?
Мне нужно использовать 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() для этого, я делал это раньше.
Это сложная задача, мне действительно нужно обдумать это. Если кто-нибудь может мне помочь, я буду признателен.
1 ответ
Если бы вы предоставили схемы таблиц (создавали сценарии таблиц), я мог бы протестировать запрос на 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