ジョイン演算子
ナチュラル・ジョインを使用したテーブルのジョイン
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 |