ジョインされている 2 つのテーブル式のどちらにもカンマが含まれていない場合、SQL Anywhere は文中にあるテーブルのペアの外部キー関係を調べ、ジョイン条件を 1 つだけ生成します。
たとえば、次のジョインには A-C と B-C という 2 つのテーブルペアがあります。
(A NATURAL JOIN B) KEY JOIN C |
C と (A NATURAL JOIN B)
をジョインするために、SQL Anywhere はテーブルペア A-C と B-C の外部キー関係を調べて、ジョイン条件を 1 つだけ生成します。複数の外部キー関係が存在する場合は、次のキージョイン決定規則に基づき、この 2 つのペアに対して
1 つのジョイン条件を生成します。
まず、参照先となるプライマリキーテーブルのうち、その 1 つの相関名と同じ役割名を持つ単一の外部キーを指定するために A-C および B-C の両方が調べられる。この基準に合う外部キーが 1 つだけ存在する場合には、それが使用される。テーブルの相関名と同じ役割名の外部キーが 2 つ以上ある場合、そのジョインはあいまいと見なされてエラーが発行される。
テーブルの相関名と同じ名前の外部キーがない場合は、そのテーブルの外部キー関係が検索される。見つかった外部キー関係が 1 つであれば、それが使用される。2 つ以上見つかると、そのジョインはあいまいと見なされてエラーが発行される。
外部キー関係がまったく存在しない場合は、エラーが発行される。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |