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

Teradata Vantage™ - SQLリクエストおよびトランザクション処理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
ユーザー ガイド
Publication ID
B035-1142-170K-JPN
Language
日本語 (日本)

自己結合の例

複数のテーブルから行が取得されるリクエストとして結合が定義されている場合、自己結合は、1つのテーブルから行が取得されるリクエストとして大まかに定義することができます。このテーブルは相関名を使用して、名前が異なる同一のテーブルの2つのコピーがあるかのように見える2つのテーブルとして再定義されます。

同じ国に在住する従業員のすべての双方向ペアを特定するとします。これを特定するには、Employeeテーブルの自己結合を使用します。

従業員からの行は次のようになります。

employee
emp_num name country dept_num
113722 Lopes United States 115
225985 Ghazal United States 115
577321 Korlapati United States 115
783904 Ramesh India 378
799106 Manjula India 378
942764 Ono Japan 915

同じ国に在住している従業員の双方向ペアを特定するには、次の自己結合リクエストを実行依頼します。

SELECT e.emp_num, e.name, f.emp_num, f.name, e.country
FROM employee AS e, employee AS f
WHERE e.country = f.country
AND   e.emp_num < f.emp_num
ORDER BY e.emp_num, f.emp_num;

従業員の2つの異なる相関名を指定することによって、テーブルをテーブル自体に結合することができます。条件e.country = f.countryは同じ国に在住する従業員のみをペアにし、条件e.emp_num < f.emp_numは異なる従業員番号を持つ従業員のみをペアにします。

このリクエストによって次の結果のテーブルが生成されます。

countryに基づく自己結合後のemployee
emp_num name emp_num name country
113722 Lopes 225085 Ghazal United States
113722 Lopes 577321 Korlapati United States
225085 Ghazal 577321 Korlapati United States
783004 Ramesh 799106 Manjula India