Я учусь, мне интересно изучать MySQL, и я создаю сайт с фильмами. Я был бы очень признателен, если бы кто-нибудь мог мне здесь помочь.
Итак, я сделал такой запрос:
SELECT Movie.idMovie,MovieTitle,Description,
group_concat(ActorName) AS ActorName,group_concat(DirectorName)
FROM EAD_ASSIGNMENT.Movie
INNER JOIN EAD_ASSIGNMENT.Movie_Actor
ON EAD_ASSIGNMENT.Movie.idMovie = EAD_ASSIGNMENT.Movie_Actor.idMovie
INNER JOIN EAD_ASSIGNMENT.Actor
ON EAD_ASSIGNMENT.Movie_Actor.idActor = EAD_ASSIGNMENT.Actor.idActor
INNER JOIN EAD_ASSIGNMENT.Movie_Director
ON EAD_ASSIGNMENT.Movie.idMovie = EAD_ASSIGNMENT.Movie_Director.idMovie
INNER JOIN EAD_ASSIGNMENT.Director
ON EAD_ASSIGNMENT.Movie_Director.idDirector =
EAD_ASSIGNMENT.Director.idDirector
WHERE Movie.idMovie = 1;
Стол, который я получил, выглядел так
1 || Frozen || A magical movie || Idina Menzel,Kristen Bell || Jennifer Lee, Chris Buck
Затем я запросил WHERE Movie.idMovie = 2
К моему шоку, у меня получилось вот что (проблема в последней ячейке),
2 || Starwars || A very nice movie || Carrie Fisher,Harrison Ford || J.J. Abrams,J.J. Abrams
Итак, проблема в том, что group_concat работает не так, как я думал. В этом случае для первого запроса это выглядело нормально, но что касается второго запроса, он рассматривал 1 значение как группу и сгруппировал его с самим собой (угадывая)? Есть ли способ сгруппировать результаты, если их больше 1 с символом «,» между ними, и если есть только 1 результат, ничего не делать?