自己結合 - Teradata Database - Teradata Vantage NewSQL Engine

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/arh1512079329802.ditamap
dita:ditavalPath
ja-JP/arh1512079329802.ditaval
dita:id
B035-1142
Product Category
Software
Teradata Vantage

自己結合の例

複数のテーブルから行が取得されるリクエストとして結合が定義されている場合、自己結合は、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