Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データのクエリと変更 » ジョイン:複数テーブルからのデータ検索 » キー・ジョイン

 

キー・ジョイン操作規則

以下の規則は、これまでに説明した情報をまとめたものです。

規則 1:2 つのテーブルのキー・ジョイン

この規則は、A KEY JOIN B に適用されます。ここで、A と B はベース・テーブルまたはテンポラリ・テーブルです。

  1. B を参照する A のすべての外部キーを見つける。

    テーブル B の相関名が役割名になる外部キーが存在する場合には、それを優先外部キーとする。

  2. A を参照する B のすべての外部キーを見つける。

    テーブル A の相関名が役割名になる外部キーが存在する場合には、それを優先外部キーとする。

  3. 優先キーが 2 つ以上存在する場合、そのジョインはあいまいである。構文エラー SQLE_AMBIGUOUS_JOIN (-147) が発行される。

  4. 優先キーが 1 つだけ存在する場合には、この KEY JOIN 式に生成されたジョイン条件を定義するために、この外部キーが選択される。

  5. 優先キーがまったくない場合は、A と B 間にある他の外部キーが使用される。

    • A と B の間に外部キーが 2 つ以上ある場合、そのジョインはあいまいである。構文エラー SQLE_AMBIGUOUS_JOIN (-147) が発行される。

    • 外部キーが 1 つだけ存在する場合には、この KEY JOIN 式に生成されたジョイン条件を定義するために、この外部キーが選択される。

    • 外部キーがまったくない場合、ジョインは無効であり、エラーが生成される。

規則 2:カンマを含まないテーブル式のキー・ジョイン

この規則は、A KEY JOIN B に適用されます。ここで、A と B はカンマを含まないテーブル式です。

  1. テーブルの各ペア (テーブル式 A から 1 つとテーブル式 B から 1 つ) について、すべての外部キーをリストし、テーブル間のすべての優先キーにマークする。優先キー決定規則は上記の規則 1 で指定されている。

  2. 優先キーが 2 つ以上存在する場合、そのジョインはあいまいである。構文エラー SQLE_AMBIGUOUS_JOIN (-147) が発行される。

  3. 優先キーが 1 つだけ存在する場合には、この KEY JOIN 式に生成されたジョイン条件を定義するために、この外部キーが選択される。

  4. 優先キーがまったくない場合は、テーブルのペア間にある他の外部キーが使用される。

    • 外部キーが 2 つ以上存在する場合、そのジョインはあいまいである。構文エラー SQLE_AMBIGUOUS_JOIN (-147) が発行される。

    • 外部キーが 1 つだけ存在する場合には、この KEY JOIN 式に生成されたジョイン条件を定義するために、この外部キーが選択される。

    • 外部キーがまったくない場合、ジョインは無効であり、エラーが生成される。

規則 3:テーブル式リストのキー・ジョイン

この規則は、(A1, A2, ...) KEY JOIN ( B1, B2, ...) に適用されます。ここで、A1、B1 はカンマを含まないテーブル式です。

  1. テーブル式 Ai と Bj の各ペアに対して、規則 1 または規則 2 を適用し、テーブル式 (Ai KEY JOIN Bj) 用にユニークに生成されたジョイン条件を検出する。テーブル式のペアの KEY JOIN のいずれかが規則 1 または規則 2 によってあいまいであると判断されると、構文エラーになる。

  2. この KEY JOIN 式の生成されたジョイン条件は、手順 1 のジョイン条件の論理積である。

規則 4:カンマを含まないテーブル式とリストのキー・ジョイン

この規則は、(A1, A2, ...) KEY JOIN ( B1, B2, ...) に適用されます。ここで、A1、B1 はカンマを含む可能性のあるテーブル式です。

  1. テーブル式 Ai と Bj の各ペアに対して、規則 1、規則 2、または規則 3 を適用し、テーブル式 (Ai KEY JOIN Bj) 用にユニークに生成されたジョイン条件を検出する。テーブル式のペアの KEY JOIN のいずれかが規則 1、規則 2、または規則 3 によってあいまいであると判断されると、構文エラーになる。

  2. この KEY JOIN 式の生成されたジョイン条件は、手順 1 のジョイン条件の論理積である。