データベース千夜一夜第12回

テーブルの関連付け(2)~内部結合と外部結合 長谷川裕行
有限会社 手國堂

内部結合と等結合

関連付けはテーブルに対して行うものですが、その際「フィールド同士をどのように結び付けるのか」「どちらのテーブルを基準とするのか」といった結び付けの形態を明確にしなければなりません。この結び付けの様子を「結合」と呼びます。


- INNER JOINによる内部結合 -

ここまで、結合の条件指定にWHERE句を用いる形を紹介してきました。WHERE句は1つのテーブルに対するレコードの抽出条件にも使われるため、関連付けたテーブルの場合でも「条件を指定する」という意味が分かりやすくなります。

これと同じ指定をWHERE句を使わず、FROM句で行うこともできます。書式は以下のようになります。

  FROM <参照側テーブル> INNER JOIN <被参照側テーブル>
  ON <参照側テーブル>.<フィールド> = <被参照側テーブル>.<フィールド>

例えば上の例なら、以下のようなSQLでも同じ結果が得られます。

  SELECT A.商品ID, A.品名, A.仕入単価, A.仕入先ID, B.仕入先名
  FROM    商品_mr A INNER JOIN 仕入先_mr B
  ON        A.仕入先ID = B.仕入先ID

JOINは結合演算子で、INNER修飾子によって内部結合を示し、ON以降に結合条件を記述します。

SQL-92以降はWHERE句による内部結合の指定を「旧形式」と表現しており、FROM句にINNER JOIN~ONを使うのが一般的です。



- 通常は「=」で結ぶ -

一般に、マスターテーブルのIDフィールドを参照してレコードを導出する構造では、WHERE句の条件式で2つのテーブルの(通常は同名の)フィールドを「=」演算子で結ぶ形となります。

しかし、中には<や>などの不等号で「同じではない値を指定」したり、文字列フィールドに対してLike演算子を使い「一部が一致する値を指定」したりする場合もあります。もちろん、IDフィールド同士を対象とした通常の形態ではありません。極めて珍しい構造です(特に不等号は、ほとんど使用されません)。

こういった双方のフィールドの値が「同じではない」という条件の結合も含めて、関連付けた双方のテーブルから、条件を満たした組み合わせだけを抽出してくる形の結合を「内部結合」と呼びます。

内部結合では、双方の値が同じであるという条件の他に、同じでないという条件を指定することもできる――ということです。しかし、条件式に「=」演算子を用いて双方のフィールドの値が同じレコードを導き出す「等結合」が一般的で、内部結合の大半は等結合となります。

従って、「内部結合=等結合」のように捉えられがちですが、内部結合には「=」以外の演算子を使う結合形態も存在するため、「等結合は内部結合のひとつの形態である」と言えます。



トップページ
最も基本的な関連付け
内部結合と等結合
INNER JOINによる内部結合
通常は「=」で結ぶ
外部結合
外部結合のあれこれ
完全外部結合
結合のまとめ
あとがき
Copyright © MESCIUS inc. All rights reserved.