17.10 - 左外部結合 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-171K-JPN
Language
日本語 (日本)

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_ATable_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;