Sybase IQ 12.7 User Manual

Page of 212
ジョイン演算子
 
24
 
Sybase IQ
ナチュラル・ジョインを使用したテーブルのジョイン
NATURAL JOIN 演算子は、共通のカラム名に基づいて 2 つのテーブルをジョ
インします。言い換えると、
Sybase IQ が各テーブルに共通するカラムを結び
付ける
 WHERE 句を生成します。
たとえば、次のようなクエリがあるとします。
SELECT emp_lname, dept_name
FROM employee
NATURAL JOIN department
この例では、データベース・サーバが
 2 つのテーブルを参照し、共通するカラ
ム名は
 dept_id だけであると判断します。次の ON フレーズが内部的に生成さ
れ、ジョインの実行に使用されます。
FROM employee JOIN department
...
ON employee.dept_id = department.dept_id
NATURAL JOIN を使用
したときのエラー
このジョイン演算子では、意図しないカラムを結び付けてしまう問題が起きる
可能性があります。たとえば、次のクエリは意図しなかった結果をもたらします。
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 句を注意して
使用しないと、意図しない結果をもたらすクエリを作成してしまう可能性があ
ります。