- ベストアンサー
5つのテーブルを結合する方法について
- 5つのテーブルを結合する方法についての質問です。現在、映画テーブル、批評テーブル、ジャンルテーブル、人物テーブル、映画関係者テーブルの5つのテーブルがありますが、これらを結合してデータを取得する方法が分かりません。
- 特に問題なのは、人物テーブルと映画関係者テーブルを結合して監督やキャストの名前だけを取り出す方法です。現在のテーブル構成では、一度の処理で全てのデータを取得するのが難しいかもしれません。
- ネットや専門書でも3つのテーブル結合までしか掲載されておらず、5つのテーブル結合の方法が探せませんでした。土曜日と日曜日にも調べたのですが、ヒントすら見つけることができませんでした。助けていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>苦戦しているのは、人物テーブルと映画関係者テーブルを結合しての監督等の名前だけをとりだす方法です とりあえずここについてのみ回答します。 SELECT A.名前 AS 監督名称 ,B.名前 AS キャスト1名称 ,C.名前 AS キャスト2名称 ,D.名前 AS キャスト3名称 FROM 人物テーブル AS 人物 INNER JOIN 映画関係者テーブル AS A ON 人物.id = A.監督id INNER JOIN 映画関係者テーブル AS B ON 人物.id = B.キャスト1id INNER JOIN 映画関係者テーブル AS C ON 人物.id = C.キャスト2id INNER JOIN 映画関係者テーブル AS D ON 人物.id = D.キャスト3id となります。 もっとスマートなやり方もありますが、サブクエリが使う上に初心者だと取っつき難い方法になるので、ここではふれません。
その他の回答 (2)
- o_chi_chi
- ベストアンサー率45% (131/287)
サブクエリのほうが視覚的にわかりやすいと思います。 監督名をとりだす。 SELECT E.タイトルid J.名前 AS 監督名 FROM 映画関係者テーブル E INNER JOIN 人物テーブル J ON E.監督id = J.id これを監督名テーブルとすると SELECT E.タイトル --略--- K.監督名 FROM 映画テーブル E INNER JOIN 監督テーブル K ON E.id = K.タイトルid 監督テーブルをもとのクエリにもとすと SELECT E.タイトル --略--- K.監督名 FROM 映画テーブル E INNER JOIN (SELECT E.タイトルid J.名前 AS 監督名 FROM 映画関係者テーブル E INNER JOIN 人物テーブル J ON E.監督id = J.id) K ON E.id = K.タイトルid キャストも同様に
お礼
サブクエリのやり方を教えていただきありがとうございます。 そのうち、そのやり方でも挑戦してみます!
- jjon-com
- ベストアンサー率61% (1599/2592)
select タイトル, 画像, 制作年, あらすじ, 感想, 点数, ジャンル1, ジャンル2, E.名前 as 監督名, F.名前 as キャスト1名, G.名前 as キャスト2名, H.名前 as キャスト3名 from 映画テーブル A join 批評テーブル B on A.id = B.タイトルid join ジャンルテーブル C on A.id = C.タイトルd join 映画関係者テーブル D on A.id = D.タイトルid join 人物テーブル E on D.監督id = E.id join 人物テーブル F on D.キャスト1id = F.id join 人物テーブル G on D.キャスト2id = G.id join 人物テーブル H on D.キャスト3id = H.id ;
お礼
こんな丁寧に書いていただきありがとうございます。 おおいに参考にさせていただきました。 本当にありがとうございました。
お礼
同じ質問なのに、2回もお答えいただきありがとうございました。 おかげさまで、望み通りのサイトが作れそうです。 本当にありがとうございました。