SQLでテーブル結合を使って一致するデータを抽出する方法について、具体的なサンプルコードと共に解説します。初心者でも理解できる内部結合から応用的な外部結合まで、実践的な使い方を学んでみませんか?
SQLで複数テーブルを結合する方法とJOINの使い分け完全ガイド
SQLのテーブル結合について、基本的な使い方から実践的なテクニックまでを解説します。複数テーブルの結合で悩んでいる方は、どのJOINを選べばよいのでしょうか?
INNER JOINは最も基本的な結合方法で、2つのテーブル間で一致するデータのみを取得します。以下のような構文で使用します:
SELECT
customers.customer_name,
orders.order_date,
products.product_name
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id
INNER JOIN products
ON orders.product_id = products.product_id
このクエリでは、顧客情報、注文情報、商品情報の3つのテーブルを結合して、関連するデータを一度に取得しています。
外部結合では、一方のテーブルのデータを全て取得しつつ、もう一方のテーブルのデータと結合します。
SELECT
employees.employee_name,
departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id
このクエリでは、部署に所属していない従業員も含めて全従業員の情報を取得できます。
複数テーブルの結合では、結合順序が重要になります。以下は3つのテーブルを結合する例です:
SELECT
c.customer_name,
o.order_date,
p.product_name,
d.delivery_status
FROM customers c
LEFT JOIN orders o
ON c.customer_id = o.customer_id
LEFT JOIN products p
ON o.product_id = p.product_id
LEFT JOIN delivery d
ON o.order_id = d.order_id
結合順序を明確にするために括弧を使用することもできます。
大規模なデータベースでテーブル結合を行う際は、以下の点に注意が必要です:
UNIONを使用すると、複数のSELECT文の結果を縦方向に結合できます:
SELECT customer_id, customer_name, 'VIP' as customer_type
FROM vip_customers
UNION
SELECT customer_id, customer_name, 'Regular' as customer_type
FROM regular_customers
UNIONとJOINを組み合わせることで、より複雑なデータ抽出も可能です。