結合の使用

結合条件は、FROM 句または WHERE 句で指定できますが、FROM 句で指定することをお勧めします。WHERE 句や HAVING 句で検索条件を指定すれば、結合条件によって選択した行についてさらにフィルター選択することができます。

結合には次のカテゴリがあります。

  • 内部結合。=、<> などの比較演算子を使用する一般的な結合演算です。等結合や自然結合などがあります。

    内部結合は、比較演算子を使用して、2 つのテーブルで共通する列の値に基づいて行を照合します。たとえば、students テーブルと courses テーブルで学生証番号が同じ行をすべて取得できます。

  • 外部結合。外部結合は左、右、完全外部結合のいずれかになります。

    外部結合は、FROM 句で指定する場合、次のキーワードのいずれかと共に指定します。

    • LEFT JOIN または LEFT OUTER JOIN

      左外部結合の結果セットには、結合された列で一致するものだけでなく、LEFT OUTER 句で指定した左テーブルのすべての行も含まれます。左テーブルの行に右テーブルの行と一致するものがない場合、その結果セット行には、右テーブルからのすべての選択リスト列に NULL 値が格納されます。

    • RIGHT JOIN または RIGHT OUTER JOIN

      右外部結合は左外部結合の逆です。この場合、右側のテーブルの行がすべて返されます。右テーブル行に一致する行が左テーブルにない場合、左テーブルには NULL 値が返されます。

    • FULL JOIN または FULL OUTER JOIN

      完全外部結合は、左テーブルと右テーブル両方のすべての行を返します。他方のテーブルに一致する行がない場合、そのテーブルの選択リスト列には NULL 値が格納されます。テーブル間で一致した場合、結果セットのすべての行に、ベース テーブルのデータ値が格納されます。

  • クロス結合

    クロス結合は左テーブルからすべての行を返します。左テーブルの各行は、右テーブルのすべての行と結合されます。クロス結合はデカルト積とも呼ばれます。

次の例は、販売員を兼務している従業員の名前を検索する内部結合です。

USE AdventureWorks2008R2;
GO
SELECT e.BusinessEntityID
FROM HumanResources.Employee AS e
    INNER JOIN Sales.SalesPerson AS s
    ON e.BusinessEntityID = s.BusinessEntityID

内部結合または完全外部結合では、FROM 句のテーブルまたはビューを任意の順序で指定できます。左外部結合または右外部結合を使用する場合は、テーブルまたはビューを指定する順序が重要になります。左外部結合または右外部結合におけるテーブルの順序付けの詳細については、「外部結合の使用」を参照してください。

他の結合の使用方法の詳細については、次のトピックを参照してください。