SQL結合の種類として、内部結合、外部結合、交差結合があります。
今回はそのうち内部結合と外部結合の違いについて説明します。
以下のサンプルテーブルを用いて説明します。
<内部結合(INNER JOIN)>
二つのテーブル間で結合条件のフィールド値が一致するレコードのみを抽出します。
以下のサンプルSQLのように記述します。
サンプルSQL
SELECT テーブル1.列1, テーブル1.商品名, テーブル2.個数 FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.列1 = テーブル2.列1
出力結果
<外部結合(OUTER JOIN)>
二つのテーブル間で一方のテーブルについて全レコードを抽出し、
もう一方のテーブルについては結合条件のフィールド値と一致するデータのみ抽出します。
主に左外部結合(LEFT OUTER JOIN)と右外部結合(RIGHT OUTER JOIN)があります。
OUTERは省略可能です。
-左外部結合の場合-
FROM句に続くテーブル名(以下サンプルでは「テーブル1」)については全て抽出し、
ON句に続くテーブル(以下サンプルでは「テーブル2」)については
結合条件のフィールド値と一致するレコードのみを抽出します。
サンプルSQL
SELECT テーブル1.列1, テーブル1.商品名, テーブル2.個数 FROM テーブル1 LEFT JOIN テーブル2 ON テーブル1.列1 = テーブル2.列1
出力結果
-右外部結合の場合-
ON句に続くテーブル名(以下サンプルでは「テーブル2」)については全て抽出し、
FROM句に続くテーブル(以下サンプルでは「テーブル1」)については
結合条件のフィールド値と一致するレコードのみを抽出します。
サンプルSQL
SELECT テーブル2.列1, テーブル1.商品名, テーブル2.個数 FROM テーブル1 RIGHT JOIN テーブル2 ON テーブル1.列1 = テーブル2.列1
出力結果