SQLのLeft Outer Joinとは

今日はLeft Outer Joinについて説明します。 Left Outer JoinまたはLeft Joinは、SQLでは同じものです。Left Outer Joinでは、結合の左テーブルからすべてのデータを返します。

もうひとつ、注意しなければならないことがあります。 左側のテーブルで利用可能な行があり、右側のテーブルで利用可能な一致するデータがない場合、結果セットにはその行のNULL値のみが含まれます。

Left Outer Joinの構文

1
2
3
4
5
6
7
8
SELECT lefttable1.column1,lefttable1.column2,lefttable2.column1,….
FROM lefttable1
LEFT JOIN lefttable2
ON lefttable1.matching_column = lefttable2.matching_column;
lefttable1: 最初のテーブル。
左テーブル2:2番目のテーブル
matching_column: 2つのテーブルに共通する列です。

上記の構文はとても理解しやすいですね。 今から、「BOOKCUSTOMERS」用と「ORDERS」用の2つのテーブルを作成します。左外部結合の使用方法については、これから左外部結合の実用的な例をご紹介しますので、一緒にご覧ください。 ここでは、データベースやテーブルの作成方法については触れません。

TABLE A. BOOKCUSTOMERS

TABLE B. BOOKCUSTOMERS

TABLE C: BOOKCUSTOMERS

1
2
3
4
5
6
7
8
9
+-。—+———-+—–+———–+———-+
| ID|名前|年齢|住所|給料|
+—-+———-+———–+———-+
| 1|SAMUAL|32|Austin|8000.00|
|2|ジョンソン|25|オハイオ|9500.00|
|3|マシュー|23|ニューヨーク|7000.00|
|4|エヴァ|25|テキサス|6500.00|
|5|エイプリル|27|サンマルコス|8500.00 |
+—-+———-+—–+———–+———-+

TABLE B: ORDERS

1
2
3
4
5
6
7
8
+—–+———————+—————–+——–+
| OID|DATE|BOOKCUSTOMER_ID|AMOUNT|
+—–+———————+—————–+——–+
| 102|2019-12-08 00:00:00:00|3|4000|
| 100|2019-09-08 00:00:00|3|3500|
| 101|2019-08-20 00:00:00|2|6560|
| 103|2018-05-20 00:00:00|4|2060|
+—–+———————+—————–+——–+

さて、これからこの2つのテーブルを左外部結合の助けを借りて結合し、テーブルのデータにアクセスします。

Left Outer JoinのSQLクエリ。

1
2
3
4
SQL> SELECT ID, NAME, AMOUNT
FROM BOOKCUSTOMERS
LEFT JOIN ORDERS
ON BOOKCUSTOMERS.ID = ORDERS.

1行目では、最終結果に表示したい列をテーブル「BOOKCUSTOMERS」から選択しています。

最後の行では、テーブル1の列とテーブル2の列をマッチングさせています。 今回の例では、「BOOKCUSTOMERS.ID」と「ORDERS.BOOKCUSTOMER_ID」をマッチングしています。

結果

さて、最終的な結果を以下に示します。

1
2
3
4
5
6
7
8
9
10
11
+-。—+———-+——–+
| ID | NAME | AMOUNT |
+—-+———-+——–+
| 1|SAMUAL|NULL|
| 2|Johnson|6560|
| 3|Mathew|4000|
| 3|Mathew|3500|
| 2|John|6560|
| 4|Eva|2060|
| 5|April|NULL|
+-。—+———-+——–+

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です