共通のフィールドで一致する値があるたびに、2 つのテーブルからレコードを結合します。
構文
FROM table1 INNER JOIN table2 ON table1.field1compopr table2.field2
INNER JOIN 操作には、次の指定項目があります。
| 引数 | 説明 |
|---|---|
| table1、table2 | 結合するレコードのあるテーブルの名前。 |
| field1、field2 | 結合されるフィールドの名前。 数値でない場合は、フィールドは同じデータ型で同じ種類のデータを含む必要がありますが、同じ名前にする必要はありません。 |
| compopr | 任意の関係比較演算子: "="、"<"、">"、"<="、">="、"<>" |
解説
INNER JOIN 操作は、任意の FROM 句で使用できます。 これは最も一般的な結合の種類です。 内部結合は 2 つのテーブルに共通するフィールドで一致する値があるたびに、両方のテーブルからレコードを結合します。
Departments テーブルと Employees テーブルで INNER JOIN を使用して、各部署のすべての従業員を選択できます。 これに対し、すべての部門 (従業員が割り当てられていない部門も含む) またはすべての従業員 (一部が部門に割り当てられていない場合でも) を選択するには、LEFT JOIN 操作または RIGHT JOIN 操作を使用して外部結合を作成できます。
メモまたは OLE オブジェクトのデータを含むフィールドを結合しようとすると、エラーが発生します。
同様の型の 2 つの数値フィールドを結合することができます。 たとえば、AutoNumber フィールドと Long フィールドは同様の型なので結合できます。 しかし、Single 型と Double 型のフィールドを結合することはできません。
次の例では、Categories テーブルと Products テーブルを CategoryID フィールドで結合する方法を示しています。
SELECT CategoryName, ProductName
FROM Categories INNER JOIN Products
ON Categories.CategoryID = Products.CategoryID;
前の例では、CategoryID は結合フィールドですが、SELECT ステートメントに含まれていないため、クエリ出力には含まれません。 結合フィールドを含めるには、SELECT ステートメント (この場合は Categories.CategoryID) にフィールド名を含めます。
次の構文を使用して、複数の ON 句を JOIN ステートメントでリンクすることもできます。
フィールドの選択
FROM table1 INNER JOIN table2
ON table1.field1compoprtable2.field1 AND
ON table1.field2compoprtable2.field2)または
ON table1.field3compoprtable2.field3)];
次の構文を使用して、JOIN ステートメントを入れ子にすることもできます。
フィールドの選択
FROM table1 INNER JOIN
(table2 INNER JOIN [( ]table3
[INNER JOIN [( ]tablex [INNER JOIN ...)]
ON table3.field3compoprtablex.fieldx)]
ON table2.field2compoprtable3.field3)
ON table1.field1compoprtable2.field2;
LEFT JOIN または RIGHT JOIN は、INNER JOIN の入れ子にすることができますが、INNER JOIN は LEFT JOIN または RIGHT JOIN の入れ子にすることはできません。