左外部結合
用語
「左外部結合」(LEFT JOIN句、LEFT OUTER JOIN句)についての説明です。
左外部結合ってどういうことですか?
左外部結合は、SQL文で二つのテーブルを結合する方法の一つです。左側のテーブルの全てのレコードと、右側のテーブルの一致するレコードが選択されます。一致しない場合は、右側のテーブルの値はNULLになります。
それって、実際にどういう使い方があるんですか?
例えば、社員の情報を全て管理しているemployeeテーブルと、それぞれの社員が所属する部署の情報を管理しているdepartmentテーブルがあるとします。こうした時に、左外部結合を使うことができます。
例えば、employeeテーブルにはいるけれど、部署の情報がない社員もいるという場合ですか?
そうですね。このような場合に、左外部結合を使うことができます。
なるほど、その結果の取り方はどうなるんですか?
左外部結合を実行すると、左側のテーブルに存在する全てのレコードと、右側のテーブルの一致するレコードが選択されます。そして、一致しない場合には、右側のテーブルの値はNULLになります。つまり、左側のテーブルに存在するレコードが全て取得され、右側のテーブルには一致するレコードがあればその値が、なければNULLが取得されるということです。
実際の例を見ることはできますか?
では、例を見てみましょう。最初のテーブルがemployeeテーブルで左側になります。次のテーブルがdepartmentテーブルで右側になります。
name | dept_id |
---|---|
Alice | 1 |
Bob | 2 |
Charlie | NULL |
Dave | NULL |
Emily | 1 |
Frank | 3 |
id | name |
---|---|
1 | Sales |
2 | Marketing |
3 | Development |
4 | Finance |
このとき、左外部結合を実行すると、以下のような結果が得られます。
employee.name | department.name |
---|---|
Alice | Sales |
Bob | Marketing |
Charlie | NULL |
Dave | NULL |
Emily | Sales |
Frank | Development |
左外部結合は、どんな場合に使われるんですか?
左外部結合は、左側のテーブルには必ずデータがあるが、右側のテーブルにはデータがあるかどうか分からない場合に使われます。例えば、上の例で言うと、従業員(employee)は必ず存在するが、所属部署(department)が存在しない従業員もいるため、左外部結合を使用することが適切です。また、左側のテーブルにデータがあっても、右側のテーブルのデータが全て必要ではない場合も、左外部結合を使用することができます。
まとめ
「左外部結合」(LEFT JOIN句、LEFT OUTER JOIN句)とは、SQL文で二つのテーブルを結合する方法の一つです。
左側のテーブルの全てのレコードと、右側のテーブルの一致するレコードが選択されます。
一致しない場合は、右側のテーブルの値はNULLになります。
左外部結合は、左側のテーブルには必ずデータがあるが、右側のテーブルにはデータがあるかどうか分からない場合に使われます。
また、左側のテーブルにデータがあっても、右側のテーブルのデータが全て必要ではない場合も、左外部結合を使用することができます。
左外部結合は、テーブルの結合において非常に便利で、データを取得する場合によく使用されます。