共通のフィールドで一致する値があるたびに、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 ステートメントに含まれていないため、クエリ出力には含まれません。 結合フィールドを含めるには、フォールド名 (この場合は Categories.CategoryID) を SELECT ステートメントに含めます。
次の構文を使用して、複数の ON 句を JOIN ステートメントでリンクすることもできます。
SELECT fields
FROM table1 INNER JOIN table2 ON table1.field1compoprtable2.field1 AND ON table1.field2compoprtable2.field2) OR ON table1.field3compoprtable2.field3)];次の構文を使用して、JOIN ステートメントを入れ子にすることもできます。
SELECT fields
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 の入れ子にすることはできません。