2016-10-22 7 views
0

DatabaseMySQLの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はいすべての言語をつなぎ合わせるためのグループコンカットとそれの中のグループコンカットを試してみましたが、その言語映画リリースのすべての劇場をグループ化しましたが、ネストされたグループコンカットはできません – user2827048

+0

私たちはそれを修正するでしょう –

答えて

0

ようなものになるだろうネストされたGROUP_CONCATが必要です。

使用CONCATあなたはGROUP_CONCAT`が答えである `言ったようにlang & nameが、結果に

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

それは、どの言語がどの劇場に対応しているかを見ることが不可能になる「(各言語)、(すべての劇場)」のようなものを私に与えるだろう – user2827048

+0

@ user2827048 - アップデートをチェックすると、 –

関連する問題