SQL JOIN の使い方とテーブル結合の実践的な手法

SQLのJOINを使ったテーブル結合の基本から応用まで、実践的なコード例を交えて解説します。複数のテーブルを効率的に結合して必要なデータを取得するにはどうすればよいのでしょうか?

SQLのJOINを使ったテーブル結合の基礎と実践

テーブル結合の基本知識
📊
結合の種類

INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOINの4種類があります

🔄
結合条件

ON句を使用して、結合するテーブルの関連カラムを指定します

パフォーマンス

適切な結合方法の選択でクエリの実行速度が大きく変わります

SQLのINNER JOINによる基本的なテーブル結合

INNER JOINは最も基本的な結合方法で、両方のテーブルに存在するデータのみを取得します。以下のような構文で使用します:

 


SELECT employees.name, departments.dept_name
FROM employees
INNER JOIN departments
ON employees.dept_id = departments.id

 

このクエリでは、従業員テーブルと部署テーブルを部署IDで結合し、共通するレコードのみを取得します。

LEFT JOINを使用した外部結合の実装方法

LEFT JOINは、左側のテーブルのすべてのレコードと、右側のテーブルの一致するレコードを取得します。以下は実装例です:

 


SELECT customers.name, orders.order_date
FROM customers
LEFT JOIN orders
ON customers.id = orders.customer_id

 

注文履歴がない顧客も含めて全顧客の情報を取得したい場合に有効です。

SQLのRIGHT JOINとFULL OUTER JOINの活用

RIGHT JOINは左右が逆のLEFT JOINで、FULL OUTER JOINは両方のテーブルの全レコードを取得します。

 


SELECT products.name, categories.category_name
FROM products
FULL OUTER JOIN categories
ON products.category_id = categories.id

 

このクエリは商品とカテゴリの関係を完全に把握する際に役立ちます。

複数テーブルの結合とパフォーマンス最適化

3つ以上のテーブルを結合する場合は、以下のように記述します:

 


SELECT e.name, d.dept_name, p.project_name
FROM employees e
INNER JOIN departments d ON e.dept_id = d.id
INNER JOIN projects p ON e.project_id = p.id

 

結合順序やインデックスの活用が重要で、実行計画を確認しながら最適化を行います。

SQLのJOINを使った高度なデータ分析手法

集計関数とJOINを組み合わせることで、より詳細な分析が可能です:

 


SELECT d.dept_name,
       COUNT(e.id) as employee_count,
       AVG(e.salary) as avg_salary
FROM departments d
LEFT JOIN employees e ON d.id = e.dept_id
GROUP BY d.dept_name

 

このクエリは部署ごとの従業員数と平均給与を算出します。