2016-10-22 69 views
0

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查詢我們將修復它 –

回答

0

你不」 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 - 檢查更新。可以給你更好的觀點 –