ナチュラル・ジョインを使用したテーブルのジョイン

ジョイン演算子

ナチュラル・ジョインを使用したテーブルのジョイン

NATURAL JOIN 演算子は、共通のカラム名に基づいて 2 つのテーブルをジョ インします。言い換えると、Sybase IQ が各テーブルに共通するカラムを結び 付ける WHERE 句を生成します。

たとえば、次のようなクエリがあるとします。

SELECT emp_lname, dept_name

FROM employee

NATURAL JOIN department

NATURAL JOIN を使用

したときのエラー

この例では、データベース・サーバが 2 つのテーブルを参照し、共通するカラ ム名は dept_id だけであると判断します。次の ON フレーズが内部的に生成さ れ、ジョインの実行に使用されます。

FROM employee JOIN department

...

ON employee.dept_id = department.dept_id

このジョイン演算子では、意図しないカラムを結び付けてしまう問題が起きる 可能性があります。たとえば、次のクエリは意図しなかった結果をもたらします。

SELECT *

FROM sales_order

NATURAL JOIN customer

このクエリの結果には、ローが 1 つもありません。

データベース・サーバは、内部的に次の ON フレーズを生成します。

FROM sales_order JOIN customer

ON sales_order.id = customer.id

sales_order テーブルの id カラムは、注文の ID 番号です。一方、customer テー ブルの id カラムは、顧客の ID 番号です。これらの番号は 1 つも一致しません。 たとえ一致する番号があったとしても、当然それは意味を持ちません。

ジョイン演算子をむやみに使用しないように注意してください。ジョイン演算 子は、単に強制力のない外部キーや共通のカラム名で WHERE 句を入力する手 間を省くためのものであることを忘れないでください。WHERE 句を注意して 使用しないと、意図しない結果をもたらすクエリを作成してしまう可能性があ ります。

24

Sybase IQ

Page 40
Image 40
Sybase 12.7 manual ナチュラル・ジョインを使用したテーブルのジョイン, Sybase IQ