Sybase 12.7 manual ジョインの制限, Sybase IQ

Models: 12.7

1 212
Download 212 pages 60.16 Kb
Page 36
Image 36
ジョインの制限

ジョインの制限

外積ジョインは、ジョインを理解するための単純な出発点にすぎず、それ自体 はあまり役に立ちません。これ以降の項で、より選択性の高いジョインを構築 する方法について説明します。このジョインは、外積テーブルへの制限の適用 と考えることができます。

ジョインの制限

 

外積ジョインを有効に利用するには、何らかの条件を満たすローだけを結果に

 

含める必要があります。ジョイン条件と呼ばれるこの条件では、比較演算子

 

(==>< など ) を使用して、あるテーブルの 1 つのカラムを別のテーブルの

 

1 つのカラムと比較します。これにより、外積の結果から一部のローを除外し

 

ます。

 

たとえば、前の項のジョインを有効に利用するには、sales_order テーブルの

 

sales_rep employee テーブルの従業員番号が一致するローだけを結果に含

 

めるように指定します。これにより、各ローには注文と、その注文を担当する

 

営業担当者の情報が格納されます。

1

これを実行するには、前のクエリに WHERE 句を追加し、従業員とその担当登

 

録のリストを表示します。

SELECT *

FROM sales_order, employee

WHERE sales_order.sales_rep = employee.emp_id

 

カラムを識別するために、テーブル名をプレフィクスとして指定します。この

 

例では必ずしも必要ありませんが、テーブル名のプレフィクスを使用すると文

 

が明確になります。2 つのテーブルに同じ名前のカラムがあるときは、このプ

 

レフィクスを指定する必要があります。このようなコンテキストで使用する

 

テーブル名を「修飾子」と呼びます。

 

このクエリの結果には 648 のローしかありません (sales_order テーブルの各

 

ローに 1 つずつ )。ジョインした元の 48,600 のローのうち、648 のローにだけ

 

2 つのテーブルで共通する従業員番号が含まれています。

2

次のクエリでは、一部のカラムだけをフェッチし、結果を順序付けするように

 

変更を加えています。

SELECT employee.emp_lname, sales_order.id, sales_order.order_date

FROM sales_order, employee

WHERE sales_order.sales_rep = employee.emp_id ORDER BY employee.emp_lname

SELECT コマンドに多くのテーブルがある場合は、修飾子名をいくつも入力し なければならないことがあります。このようなときは、相関名を使用して入力 の手間を省くことができます。

20

Sybase IQ

Page 36
Image 36
Sybase 12.7 manual ジョインの制限, Sybase IQ