OfferingsテーブルおよびEnrollmentテーブルに対して左外部結合を実行した場合、左側のテーブルの中で、それら2つのテーブルの内部結合の結果に返されない行は、NULLで拡張されて外部結合の結果に返されます。
内部/外部テーブルの例
以下の例では、テーブル名としてinner_tableおよびouter_tableを明示的に使用して、単純な左外部結合がSELECT文のFROM句で構築される方法に、こうした用語を関連付ける方法を指示します。内部テーブルと外部テーブルを参照してください。
この例では、左外部結合の内部テーブルや外部テーブル参照の意味について示します。
outer_table LEFT OUTER JOIN inner_table
セクション1は、outer_tableおよびinner_tableの内部結合∩(積集合)を表わします。セクション2は、外部テーブルからの一致しない行を表わします。
外部結合の結果には、セクション2と3からの一致している行が含まれますが、図ではセクション1とセクション2からの一致しない行で表わされています。これは、上記のベン図では、薄く影が付いた構成要素で示されている箇所です。
代数の設定では、結果は以下のとおりです。
(Table_A ∩ Table_B) + (Table_A - Table_B)
説明:
Table_A ∩ Table_Bは、Table_AおよびTable_Bの内部結合からの一致する行セットです。
Table_A - Table_Bは、Table_Aからの一致しない行セットです。
左外部結合の実際的な例
次のSELECT文は、次のようなテーブルに結果を生成します。
SELECT offerings.course_no,offerings.location,enrollment.emp_no FROM offerings LEFT OUTER JOIN enrollment ON offerings.course_no = enrollment.courseno;
o.course_no | o.location | e.emp_no |
C100 | El Segundo | 236 |
C100 | El Segundo | 668 |
C200 | Dayton | NULL |
C400 | El Segundo | NULL |
BTEQレポートはnullを疑問符(?)文字で表わします。
この結果では、C100のコースには2人の従業員が登録されており、C200とC400のコースには従業員が登録されていません。この場合、offeringsテーブルとenrollmentテーブルの外部結合によって返されたnullは、意味のある値です。
FROM句のキーワードOUTERはオプションであるため、上記のSELECT文は以下のように書くこともできます。
SELECT offerings.course_no,offerings.location,enrollment.emp_no FROM offerings LEFT JOIN enrollment ON offerings.course_no = employee.course_no;