- ベストアンサー
テーブルの結合について
親テーブルに対して子テーブルが複数あるときの結合方法がわかりません。 テーブル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です。
- みんなの回答 (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
その他の回答 (1)
- moon_night
- ベストアンサー率32% (598/1831)
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すると思います。
お礼
moon_nightさんありがとうございました。 おかげさまで出来ました。 ありがとうございました。
お礼
yambejpさん、ありがとうございました。 table2に名前をつけて使わなかったのでエラーがでていました。 どうもありがとうございました。