2 つのテーブルの共通するフィールドに同じ値があった場合に、両方のテーブルのレコードを結合します。
FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2
INNER JOIN 操作には、次の指定項目があります。
指定項目 | 内容 |
---|---|
table1、table2 | 結合するレコードのあるテーブルの名前。 |
field1、field2 | 結合するフィールドの名前。フィールドのデータが Numeric 型 (Numeric) でない場合、両方のフィールドのデータは同じデータ型で、かつ同じ種類である必要があります。ただし、同じ名前である必要はありません。 |
compopr | =、<、>、<=、>=、<> などの比較演算子。 |
INNER JOIN 操作は、FROM 句の中で使用します。INNER JOIN 操作は最も一般的な結合で、2 つのテーブルの共通するフィールドに同じ値があった場合に、両方のテーブルのレコードを結合します。
たとえば、[部署] テーブルと [社員] テーブルで INNER JOIN 操作を行うと、各部署に所属する社員全員を選択できます。これに対して、所属する社員が 1 人もいない部署も含めたすべての部署を選択したり、どの部署にも所属していない社員も含めた社員全員を選択するには、LEFT JOIN、RIGHT JOIN 操作を使用して外部結合を作成します。
メモ型 (Memo) または OLE オブジェクト型 (OLE Object) のフィールドを結合しようとすると、エラーになります。
2 つの数値型 (Numeric) フィールドのデータ型が同型であれば、それらを結合することができます。たとえば、オートナンバー型 (AutoNumber) フィールドと長整数型 (Long) フィールドは、同型であるため結合することができます。ただし、単精度浮動小数点数型 (Single) フィールドと倍精度浮動小数点数型 (Double) フィールドは結合できません。
次の例では、[商品区分] テーブルと [商品] テーブルを "区分コード" フィールドで結合しています。
SELECT
区分名,
商品名
FROM
商品区分 INNER JOIN
商品
ON
商品区分.
区分コード =
商品.
区分コード;
この例では、結合されるフィールドは "区分コード" フィールドですが、このフィールドは SELECT ステートメントで指定していないため、クエリの結果には含まれません。結合に使用したフィールドを出力するには、そのフィールド名を SELECT ステートメントで指定してください。上の例の場合は、フィールド名として "商品区分.区分コード"
を指定します。
次の構文を使用して、JOIN ステートメントの中で複数の ON 句を連結できます。
SELECT fields
FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field1 AND
ON table1.field2 compopr table2.field2) OR
ON table1.field3 compopr table2.field3)];
次の構文を使用して、JOIN ステートメントをネストすることができます。
SELECT fields
FROM table1 INNER JOIN
(table2 INNER JOIN [( ]table3
[INNER JOIN [( ]tablex [INNER JOIN ...)]
ON table3.field3 compopr tablex.fieldx)]
ON table2.field2 compopr table3.field3)
ON table1.field1 compopr table2.field2;
LEFT JOIN および RIGHT JOIN は、INNER JOIN にネストできますが、INNER JOIN を LEFT JOIN または RIGHT JOIN にネストすることはできません。
FROM 句 (Microsoft Jet SQL) | TRANSFORM ステートメント (Microsoft Jet SQL) |
LEFT JOIN、RIGHT JOIN 操作 (Microsoft Jet SQL) | UNION 操作 (Microsoft Jet SQL) |
SELECT ステートメント (Microsoft Jet SQL) |