SQL外部結合とは?
外部結合(Outer Join)は、SQLのJOIN操作の一種で、異なるテーブル同士を結合する際に、両方のテーブルに共通する行だけでなく、片方のテーブルにしか存在しない行も含めたい場合に使用します。これにより、データの欠損がある場合でも、他のテーブルのデータを保持したまま結果を取得できます。
外部結合には以下の3種類があります:
- LEFT OUTER JOIN:左のテーブルにある全ての行を返し、右のテーブルに該当する行があればそのデータも取得します。
- RIGHT OUTER JOIN:右のテーブルにある全ての行を返し、左のテーブルに該当する行があればそのデータも取得します。
- FULL OUTER JOIN:両方のテーブルにある全ての行を返し、どちらかに該当するデータがあれば結合されます。
LEFT OUTER JOINの例
ここでは、customers
テーブルとorders
テーブルを使って、LEFT OUTER JOINの例を示します。
このクエリは、customers
テーブルの全ての顧客を取得し、それに対応する注文がorders
テーブルにあれば、その注文情報も一緒に表示します。注文がない場合は、order_id
の値がNULL
として表示されます。
RIGHT OUTER JOINの例
次に、RIGHT OUTER JOINの例を示します。
このクエリは、orders
テーブルにある全ての注文を取得し、それに対応する顧客がcustomers
テーブルにあれば、その顧客情報も表示します。顧客情報がない場合は、customer_id
とcustomer_name
の値がNULL
として表示されます。
FULL OUTER JOINの例
最後に、FULL OUTER JOINの例です。
このクエリは、両方のテーブルから一致するデータを取得します。いずれかのテーブルにしか存在しないデータも含まれ、存在しないフィールドにはNULL
が入ります。
結合結果のイメージ
以下の表は、各外部結合の結果のイメージを示しています。
customer_id | customer_name | order_id |
---|---|---|
1 | Alice | 101 |
2 | Bob | NULL |
NULL | NULL | 103 |
4 | Charlie | 104 |
上記のように、LEFT JOIN、RIGHT JOIN、FULL JOINを使い分けることで、各テーブルの情報を適切に表示することが可能です。
まとめ
外部結合は、データが欠損している場合でも特定の情報を保ちながらクエリを実行するのに便利です。LEFT、RIGHT、FULLの3種類があり、用途に応じて適切なJOINを使い分けることが重要です。適切なJOINを選ぶことで、分析やレポート作成がより効率的になります。