目次へ

6.3. 特殊な結合演算子

SQL92 はある種の共通する結合操作を簡単に実行できるように、特別な構文を用意しています。SQL のビルトイン結合演算子には、「CROSS JOIN」、「NATURAL JOIN」、「指定結合」及び「UNION JOIN」があります。これらは次のように定義されています。

■ CROSS JOIN
結合述語のない結合に相当します。すなわち、ストレートなデカルト積です。
■ NATURAL JOIN
自然結合は一般に、外部キー値から親キー値への照合に基づいた結合を指します。ただし、SQL92 規格ではこの用語が少し違った意味で使用されています。SQL92 規格では、同じ名前を持つ 2つの列が親キーと外部キーであるかのように照合されます。つまり、そのデータベース設計が列名の一致は実際に親キーと外部キーをあらわすと取り決めている場合に、NATURAL JOIN 演算子を使用すべきだと、いう考え方です。
■ 指定結合
クエリに直接指定された条件に基づいた結合です。クエリの WHERE 句の代わりに、FROM 句で結合を行うための機能を提供します。
■ UNION JOIN
明示的または暗黙的に指定された述語を指定せず、照合やデカルト積の抽出は行われません。<テーブル A> のすべての行を取り込み、<テーブル B> の列に NULL を設定し、さらに <テーブル B> の行をすべて取り込み、<テーブル A> の列に NULL を設定した出力テーブルを生成します。
6.3.1.CROSS JOIN

CROSS JOINとは、結合テーブルの値の比較に基づいた選択を行わないデカルト積です。つまり、すべての行の組み合わせが使用されます。結合を実行し、結合述語を一切使用しない場合と効果は同じです。この結合のサンプルを考える時、出力結果が膨大な量になるので、ここでは簡略化のために次のような模式的なテーブルを考えます。

A表
01 AA
02 BB
03 CC
B表
11 TTT
22 UUU
-- sample.17-6 --

/* テーブルの結合 */

  SELECT A.甲,A.乙,B.あ,B.い
         FROM A表 A CROSS JOIN B表 B ;

/* 実行結果 */

 甲 乙 あ い
 ── ── ── ────
 01 AA 11 TTT
 01 AA 22 UUU
 02 BB 11 TTT
 02 BB 22 UUU
 03 CC 11 TTT
 03 CC 22 UUU

上記の例は、sample.17-7のように記述した場合と同じです。

-- sample.17-7 --

/* テーブルの結合 */

  SELECT A.甲,A.乙,B.あ,B.い
         FROM A表 A,B表 B ; 

この構文はあまり役に立つものではありませんが、読みやすさを改善するものであり、その目的のほとんどは明瞭化にあるといえます。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp