好的,我在 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
最佳答案
您不需要嵌套的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 ...
关于mysql - 我如何在 MySQL 中处理这样的查询,也许是 Group_Concat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40188228/