• 検索結果がありません。

JOIN

ドキュメント内 Caché SQL の使用法 (ページ 57-61)

JOIN は、あるテーブルのデータと他のテーブルのデータをリンクします。

SQL では、JOIN は、2 つのテーブルを組み合わせて、制限条件にあてはまる 3 番目のテーブル を作成する演算です。作成されたテーブルのすべての行は、制限条件を満たす必要があります。

7.2.1 OUTER JOIN 制限

Caché SQL では、LEFT と RIGHT の外部結合をサポートしていません。FULL 外部結合もサポー トしていません。NATURAL および USING 結合については、部分的にサポートしています。

OUTER JOIN サポートには、2 種類の制限事項があります。

• LEFT JOIN の右のオペランド (同じく、RIGHT JOIN の左のオペランド) への制限

LEFT JOIN の左オペランド、あるいは RIGHT JOIN の右オペランドには、オペランドの制限事 項はありません。

• 結合を指定する ON 節への制限

これらの制限について、以下のセクションで説明します。

7.2.1.1 LEFT JOIN オペランド制限

LEFT JOIN の場合、右のオペランドを結合式にすることはできません (以前のバージョンでは、ビュー またはテーブル・サブクエリにすることもできませんでした)。

例えば、以下は、

T1 LEFT JOIN T2 JOIN T3 ON (...1) ON (...2)

LEFT JOIN の右のオペランドが join 式であるため、サポートされません。

T2 JOIN T3 ON (...1)

これは、join 式です。このような場合、以下のうちのいずれかに書き換えると、条件を満たします (こ のうちの一方のみが意味をなす場合もあります)。

T1 LEFT JOIN T2 ON (...2) LEFT JOIN T3 ON (...1) T1 LEFT JOIN T3 ON (...2) LEFT JOIN T2 ON (...1)

あるいは、以下のように書き換えます。

T1 LEFT JOIN (SELECT ... FROM T2 JOIN T3 ON (...1)) ON (...2)

しかし、この形式は上記の方法に比べ、非常に遅くなります。

JOIN

7.2.1.2 RIGHT JOIN オペランド制限

RIGHT JOIN の場合、左のオペランドが join 式、ビュー、テーブル・サブクエリにすることができませ ん (RIGHT JOIN の制限は、LEFT JOIN の制限より多いことに注意してください)。

以下は、サポートされていない例です。

T1 RIGHT JOIN T2 ON (...1) RIGHT JOIN T3 ON (...2)

この場合、RIGHT JOIN T3 ...の左のオペランドは、以下の通りです。

T1 RIGHT JOIN T2 ON (...1).

以下は、別の例です。

view1 RIGHT JOIN T2 ON (...)

(SELECT ...) RIGHT JOIN T2 ON (...)

これらを解決するには、これらを LEFT JOINS として書き換え、前述の LEFT JOIN オペランドのテ クニックを使用する方法が最も簡単です。

7.2.1.3 LEFT JOIN の ON 節制限

ON 節の条件は、AND を使用することによってのみ結合できます。OR や NOT は、ON 節に現れ ません。

L を結合の左のオペラント、R を右のオペランドにします。ON 節のすべての条件は、以下のいずれ かである必要があります。

• L からの列 = R からの列

• R からの列 = リテラル値またはパラメータ 等式オペランドの順番は関係ありません。

parameter=R.column

上記は、以下と同じです。

R.column=parameter.

少なくとも 1 つの条件が、列の比較になる必要があります。

R の同じ列は、1 つ以上の比較で使用できません (L からの列の場合、このような制限はありませ ん)。

注釈: L のビューは、これらの規則が拡大して適用されます (R のビューには適用されません)。

このように、ON 節で L のビュー列が使用される場合、式ではなく、ベース・テーブル列に 拡張する必要があります。L のテーブル・サブクエリでも同様です。

ビュー、あるいはテーブルのサブクエリが UNION、GROUP BY、DISTINCT を使用する場 合、SELECT 式の実行に制限はありません。したがって、多くの場合、ビューまたはテーブ ル・サブクエリの SELECT 節に DISTINCT を追加すると、この制限に対処できます。

7.2.1.4 RIGHT JOIN の ON 節制限

RIGHT JOIN の ON 節に関する制限は、L と R を入れ替えれば、LEFT JOIN とまったく同じです。

JOIN

8

データベースの変更

SQL クエリを使用して、データベースの内容を変更できます。テーブルにインデックスが定義されて いる場合は、SQL は変更を自動的に更新します。データや参照整合の制約が定義されている場合 は、SQL は自動的にそれらを実行します。

ドキュメント内 Caché SQL の使用法 (ページ 57-61)

関連したドキュメント