おそらくデータベース初学者の方とお見受けして、サンプルで示しながら説明しますね。
Test
社員番号 | 名前 | 出身地 | 部署 |
---|
5234 | 山田 太郎 | 13 | S001 |
5235 | 鈴木 良子 | 27 | S001 |
5236 | 田中 一郎 | 23 | S002 |
5237 | 高橋 裕子 | 13 | S006 |
: | | | |
test1
test2
コード | 部署 |
---|
S001 | 営業部 |
S002 | 企画部 |
S003 | 製造部 |
S004 | 法務部 |
: | |
としましょう。
これで、おっしゃるような多対一の関係が、Testとtest1、Testとtest2で独立してできています。
これを、表示させるときは下記のようにしたい。
社員番号 | 名前 | 出身地 | 部署 |
---|
5234 | 山田 太郎 | 東京都 | 営業部 |
5235 | 鈴木 良子 | 大阪府 | 営業部 |
5236 | 田中 一郎 | 愛知県 | 企画部 |
5237 | 高橋 裕子 | 東京都 | 経理部 |
Testとtest1だけ(あるいはTestとtest2だけ)なら下記のように記述します。
MySQL
1SELECT Test.社員番号,Test.名前,test1.都道府県
2FROM Test
3LEFT JOIN test1
4ON Test.出身地 = test1.コード
FROMの後ろに置かれた方のテーブルが優先テーブルとなり、
LEFT JOINの後ろに書かれたテーブルの内容のうち、
優先テーブルにない項目は表示されません。
test2も結合させたいので、上記のFROM句の中身を()でくくり、
LEFT JOINをもう一度繰り返します。
MySQL
1SELECT Test.社員番号,Test.名前,test1.都道府県,test2.部署
2FROM (Test
3LEFT JOIN test1
4ON Test.出身地 = test1.コード)
5LEFT JOIN test2
6ON Test.部署 = test2.コード
これで複数のLEFT JOINを並列にしたSELECT文ができあがります。