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| +-。—+———-+——–+ |