MySQL - Как использовать подзапрос в операторе IN по значению

Вопрос в том, чтобы получить данные столбца таблицы и использовать их в качестве списка значений для функции IN;

Для этого примера я создал 2 таблицы: фильмы и жанры

Таблица "фильмы" содержит 3 столбца: идентификатор, имя и жанр. Таблица "жанры» содержит 2 столбца: идентификатор и имя.

+- movies-+
|         |- movie_id - int(11) - AUTO_INCREMENT - PRIMARY
|         |- movie_name - varchar(255)
|         |- movie_genres - varchar(255)
|
|         
+- genres-+
          |- genre_id - int(11) - AUTO_INCREMENT - PRIMARY
          |- genre_name - varchar(255)

Обе таблицы содержат некоторые фиктивные данные:

+----------+------------+--------------+
| movie_id | movie_name | movie_genres |
+----------+------------+--------------+
|        1 | MOVIE 1    | 2,3,1        |
|        2 | MOVIE 2    | 2,4          |
|        3 | MOVIE 3    | 1,3          |
|        4 | MOVIE 4    | 3,4          |
+----------+------------+--------------+

+----------+------------+
| genre_id | genre_name |
+----------+------------+
|        1 | Comedy     |
|        2 | Fantasy    |
|        3 | Action     |
|        4 | Mystery    |
+----------+------------+

Моя цель - получить такой результат: я

+----------+------------+--------------+-----------------------+
| movie_id | movie_name | movie_genres |   movie_genre_names   |
+----------+------------+--------------+-----------------------+
|        1 | MOVIE 1    | 2,3,1        | Fantasy,Action,Comedy |
|        2 | MOVIE 2    | 2,4          | Fantasy,Mystery       |
|        3 | MOVIE 3    | 1,3          | Comedy,Action         |
|        4 | MOVIE 4    | 3,4          | Action,Mystery        |
+----------+------------+--------------+-----------------------+

м, используя этот запрос, и этоЧастично работающая проблема состоит в том, что она использует первое значениеmovie_genres поле в списке значений IN.

SELECT `m` . * , GROUP_CONCAT( `g`.`genre_name` ) AS `movie_genre_names`
FROM `genres` AS `g`
LEFT JOIN `movies` AS `m` ON ( `g`.`genre_id`
IN (
`m`.`movie_genres`
) )
WHERE `g`.`genre_id`
IN (
(
SELECT `movie_genres`
FROM `movies`
WHERE `movie_id` =1
)
)
GROUP BY 1 =1

Результаты сильно отличаются от того, что я хочу:

+----------+------------+--------------+-------------------+
| movie_id | movie_name | movie_genres | movie_genre_names |
+----------+------------+--------------+-------------------+
|        1 | MOVIE 1    | 2,3,1        | Fantasy,Fantasy   |
+----------+------------+--------------+-------------------+

Извините, если я пропустил некоторые данные, которые яЯ новичок в MySQL.

Какой запрос я должен использовать, чтобы получить желаемые результаты?

Ответы на вопрос(1)

Ваш ответ на вопрос