SQLで3つのテーブルを結合する方法:初心者向けのガイド
Min-jun Kim
Dev Intern · Leapcell

Key Takeaways
- SQL結合は、連鎖的なJOINステートメントを使用して3つのテーブルを結合できます。
- 正しいカラムを特定することは、複数テーブルの結合を成功させるために不可欠です。
- テーブルエイリアスを使用すると、クエリの可読性が向上します。
データベースを操作する際、複数のテーブルに分散したデータを取得する必要がある状況によく遭遇します。SQL結合は、関連するカラムに基づいて2つ以上のテーブルからデータを結合するのに役立つ強力なツールです。しかし、3つのテーブルを結合する必要がある場合はどうすればよいでしょうか?この記事では、SQLで3つのテーブルを結合する方法を、明確な例を交えながら、段階的に解説します。
SQL結合の理解
3つのテーブルを結合する前に、結合とは何かを簡単に復習しましょう。SQL結合は、外部キーなど、テーブル間の関連カラムに基づいて、2つのテーブルからレコードを結合します。
最も一般的に使用される結合は次のとおりです。
- INNER JOIN: 両方のテーブルから一致する行のみを返します。
- LEFT JOIN (または LEFT OUTER JOIN): 左側のテーブルからすべての行を返し、右側のテーブルから一致する行を返します。一致しない行は
NULL
値を持ちます。 - RIGHT JOIN (または RIGHT OUTER JOIN): 右側のテーブルからすべての行を返し、左側のテーブルから一致する行を返します。
3つのテーブルの結合: 基本
SQLでは、複数のJOINステートメントを連結することで、3つ以上のテーブルを結合できます。重要なのは、テーブルを接続するカラムを特定することです。
サンプルデータベース構造
次の3つのテーブルがあるとします。
-
Customers
customer_id
customer_name
-
Orders
order_id
customer_id
order_date
-
Products
product_id
product_name
-
OrderDetails
order_id
product_id
quantity
各注文の顧客名、商品名、注文数量を知りたいとします。
3つのテーブルを結合するSQLクエリ
これを行うには、次のようにテーブルを結合します。
SELECT Customers.customer_name, Products.product_name, OrderDetails.quantity FROM Customers INNER JOIN Orders ON Customers.customer_id = Orders.customer_id INNER JOIN OrderDetails ON Orders.order_id = OrderDetails.order_id INNER JOIN Products ON OrderDetails.product_id = Products.product_id;
これはどのように機能しますか?
-
Customers INNER JOIN Orders 顧客とその注文を結合します。
-
Orders INNER JOIN OrderDetails 注文と特定の詳細(どの商品が注文されたか)を結合します。
-
OrderDetails INNER JOIN Products 注文詳細と商品情報を結合します。
各結合は、関連するカラム(通常は外部キー)を使用して、さらに1つのテーブルを接続します。これにより、SELECT
ステートメントで結合されたすべてのテーブルのフィールドにアクセスできます。
可読性のためのエイリアスの使用
クエリをより読みやすくするために、テーブルエイリアスを使用できます。
SELECT c.customer_name, p.product_name, od.quantity FROM Customers c INNER JOIN Orders o ON c.customer_id = o.customer_id INNER JOIN OrderDetails od ON o.order_id = od.order_id INNER JOIN Products p ON od.product_id = p.product_id;
他の種類の結合
上記の例ではINNER JOIN
を使用していますが、必要に応じてLEFT JOIN
またはRIGHT JOIN
を使用できます。たとえば、注文をしていない顧客を含める場合は、CustomersとOrdersの間にLEFT JOIN
を使用します。
SELECT c.customer_name, p.product_name, od.quantity FROM Customers c LEFT JOIN Orders o ON c.customer_id = o.customer_id LEFT JOIN OrderDetails od ON o.order_id = od.order_id LEFT JOIN Products p ON od.product_id = p.product_id;
結論
SQLで3つのテーブルを結合することは、テーブル間の関係を理解していれば簡単です。複数のJOINステートメントを連結し、常にテーブルを関連付けるカラムで結合するだけです。複数テーブルの結合を習得することで、はるかに強力なクエリとデータからの洞察を引き出すことができます。
FAQs
関連するカラムを使用して、複数のJOINステートメントを連結します。
はい、必要に応じてINNER JOIN、LEFT JOIN、またはRIGHT JOINを使用できます。
エイリアスを使用すると、複雑なクエリが読みやすくなります。
Leapcellは、バックエンドプロジェクトをホストするための最適な選択肢です。
Leapcell は、Webホスティング、非同期タスク、Redis向けの次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、またはRustで開発できます。
無制限のプロジェクトを無料でデプロイ
- 使用量に対してのみ支払い - リクエストも請求もありません。
比類のない費用対効果
- アイドル料金なしの従量課金制。
- 例:$25で、平均応答時間60msで694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOps統合。
- 実用的な洞察のためのリアルタイムのメトリクスとロギング。
簡単なスケーラビリティと高いパフォーマンス
- 高い同時実行性を容易に処理するための自動スケーリング。
- 運用オーバーヘッドゼロ - 構築に集中するだけです。
詳細については、ドキュメントをご覧ください。
Xでフォローしてください:@LeapcellHQ