• ベストアンサー

テーブルの結合について

親テーブルに対して子テーブルが複数あるときの結合方法がわかりません。 テーブル2、3はそれぞれマスタテーブルの値を格納しています。 具体的には4つのテーブルを結合しテーブル1のname項目、テーブル2のtest項目、area_id、pref_idで検索をしたいです。 right joinで結合してみましたが、テーブル3、4でテーブル2のtest_idを2回参照するのでエラーがでてから先に進めない状況です。 他の回答を読んだのですができなかったので質問させてください。 お分かりの方教えてください。 よろしくお願いいたします。 [teble1] ID | name 1 佐々木 2 鈴木 3 田中 [teble2] test_id | ID(table1の値) | test 1 1       テスト1 2 1       テスト2 3 2       テスト3 [teble3] test_id | area_id 1    1 1    4 2    3 [teble4] test_id | pref_id 1    1 2    2 2    5 3    2 バージョンは4.0.27です。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

right join じゃなくて left join ですよね? SELECT t1.ID ,t1.name ,t2.test ,t3.area_id ,t4.pref_id FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.ID=t2.ID LEFT JOIN table3 AS t3 ON t2.test_id=t3.test_id LEFT JOIN table4 AS t4 ON t2.test_id=t4.test_id

99Micchi
質問者

お礼

yambejpさん、ありがとうございました。 table2に名前をつけて使わなかったのでエラーがでていました。 どうもありがとうございました。

その他の回答 (1)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

select table1.ID,test,area_id,pref_id form table1 inner join table2 on table1.ID = table2.ID inner join table3 on table2.test_id = table3.test_id inner join table4 on table2.test_id = table4.test_id; 適当に書いたので動かなかったらごめんなさい。 値が一意ではないものがあるので、複数のデータがHITすると思います。

99Micchi
質問者

お礼

moon_nightさんありがとうございました。 おかげさまで出来ました。 ありがとうございました。