• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブルが5つの時の結合の仕方を知りたいです。)

5つのテーブルを結合する方法について

このQ&Aのポイント
  • 5つのテーブルを結合する方法についての質問です。現在、映画テーブル、批評テーブル、ジャンルテーブル、人物テーブル、映画関係者テーブルの5つのテーブルがありますが、これらを結合してデータを取得する方法が分かりません。
  • 特に問題なのは、人物テーブルと映画関係者テーブルを結合して監督やキャストの名前だけを取り出す方法です。現在のテーブル構成では、一度の処理で全てのデータを取得するのが難しいかもしれません。
  • ネットや専門書でも3つのテーブル結合までしか掲載されておらず、5つのテーブル結合の方法が探せませんでした。土曜日と日曜日にも調べたのですが、ヒントすら見つけることができませんでした。助けていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.1

>苦戦しているのは、人物テーブルと映画関係者テーブルを結合しての監督等の名前だけをとりだす方法です とりあえずここについてのみ回答します。 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 となります。 もっとスマートなやり方もありますが、サブクエリが使う上に初心者だと取っつき難い方法になるので、ここではふれません。

sryou1985kun
質問者

お礼

同じ質問なのに、2回もお答えいただきありがとうございました。 おかげさまで、望み通りのサイトが作れそうです。 本当にありがとうございました。

その他の回答 (2)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.3

サブクエリのほうが視覚的にわかりやすいと思います。 監督名をとりだす。 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 キャストも同様に

sryou1985kun
質問者

お礼

サブクエリのやり方を教えていただきありがとうございます。 そのうち、そのやり方でも挑戦してみます!

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

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 ;

sryou1985kun
質問者

お礼

こんな丁寧に書いていただきありがとうございます。 おおいに参考にさせていただきました。 本当にありがとうございました。