17.05 - 自己結合 - Advanced SQL Engine - Teradata Database

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

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

自己結合は、同じテーブルの複数の行にある情報を結びつけて単一の結果のテーブルを作ります。すなわち、テーブルをそのテーブル自身に結合します。

例: 自己結合

例えば、次の問合わせは、勤続年数が上司より長い従業員の氏名を調べます。

     SELECT workers.name, workers.yrs_exp, workers.dept_no,
      managers.name, managers.yrsexp
     FROM employee AS workers, employee AS managers
     WHERE managers.dept_no = workers.dept_no
     AND   managers.job_title IN ('Manager', 'Vice Pres')
     AND   workers.yrs_exp > managers.yrs_exp;

この操作は、employeeテーブルを、1つはWorkers、もう1つはManagerという2つのテーブルとして取り扱います。こうするには、FROM句でテーブルの別名を使用します。

ANSIでは、テーブルの別名を相関名または 範囲変数ともいいます。

これらの架空のテーブルには同じ列があるため(nameyrs_expdept_no)、各列の名前は、FROM句で定義されているテーブルの別名で修飾する必要があります(例えば、"workers.dept_no")。

WHERE句は、次のことを実行します。
  • 両方のテーブルに対してキーを設定する(dept_no)
  • managersテーブルに属している従業員を検索する(最初のAND)
  • 両方のテーブルから列挙する作業員と管理者を限定する(2番目のAND)

この自己結合の結果として考えられるのは、以下のとおりです。

name yrs_exp dept_no name yrs_exp
Greene W 15 100 Jones M 13
Carter J 20 500 Watson L 8
Smith T 10 700 Watson L 8
Aguilar J 11 600 Regan R 10
Leidner P 13 300 Phan A 12
Russell S 25 300 Phan A 12