INNER JOIN 操作

2 つのテーブルの共通するフィールドに同じ値があった場合に、両方のテーブルのレコードを結合します。

構文

FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2

INNER JOIN 操作には、次の指定項目があります。

指定項目 内容
table1table2 結合するレコードのあるテーブルの名前。
field1field2 結合するフィールドの名前。フィールドのデータが 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)  

使用例

INNER JOIN 操作の使用例