如何在MySQL,Group_Concat中处理像这样的查询?

如何在MySQL,Group_Concat中处理像这样的查询?

问题描述:

Database如何在MySQL,Group_Concat中处理像这样的查询?

好的我在MySQL中有上述的数据库布局,我试图有一个查询,将获得有关电影的所有信息,并使其格式很好。

比方说,我在我的表如下信息

movie 
id  name 
1   "Batman" 
2   "Superman" 

genre 
id  name 
1   "Thriller" 
2   "Horror" 

language 
id  lang 
1   "English" 
2   "Spanish" 

theatre 
id  name 
1   "First Theatre" 
2   "Second Theatre" 

movie_genre 
movie_id genre_id 
1   1 
1   2 
2   2 

movie_release 
id  language_id  movie_id 
1   1    1 
2   2    1 
3   1    2 

theatre_release 
movie_release_id  theatre_id 
1     1 
2     2 
3     1 
3     2 

,理想的输出会是这样的

movie.name genres    releases 
"Batman"  "thriller, horror" English, Theatre One 
           Spanish, Theatre Two 

"Spiderman" "Horror"   Spanish, Theatre One, Theatre Two 

我的查询尝试

Select 
    movie.name 
    Group_Concat(genre.name) as genres 
    Group_concat(language.lang, group_concat(theatre.name)) as releases 
from 
    movie 
    left join movie genre on movie.id = movie_genre.movie_id 
    left join genre on genre.id = movie_genre.genre_id 
    left join movie_release on movie_release.movie_id = movie.id 
    left join language on movie_release.language_id = language.id 
    left join theatre_release on theatre_release.movie_release_id = movie_release.id 
    left join theatre on theatre_release.theatre_id = theatre.id 
+0

正如你所说的'GROUP_CONCAT'就是答案。你尝试了什么 –

+0

@Prdp是的我试着做一个组连接来连接所有的语言和一个组里的concat里面把那个语言电影版本的所有影院分组到一起,但是你不能有一个嵌套组concat – user2827048

+0

Post查询我们将修复它 –

你不” t需要嵌套GROUP_CONCAT

使用CONCAT要结合lang & name再加入GROUP_CONCAT得到结果

Select 
    movie.name 
    Group_Concat(genre.name) as genres 
    GROUP_CONCAT(CONCAT(language.lang,' , ',theatre.name) SEPARATOR ' | ') as releases 
from ... 
+0

这会给我像“(每一个语言),(每个剧院)”这将使它不可能看到哪种语言对应于哪个剧院 – user2827048

+0

@ user2827048 - 检查更新。可以给你更好的观点 –