背景
MySQLデータベースで複数のテーブルが存在する場合、これらのテーブルを結合して一つのクエリでデータを取得することがあります。この記事では、複数のテーブルを結合してデータを取得する方法について説明します。
シナリオ
例として、users
テーブルと orders
テーブルがあり、ユーザーごとの注文情報を取得したいとします。
テーブル構造
users テーブル
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(255)
);
orders テーブル
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
product VARCHAR(255),
amount DECIMAL(10, 2),
FOREIGN KEY (user_id) REFERENCES users(id)
);
クエリ
ユーザーごとの注文情報を取得するためのクエリを以下に示します。
SELECT users.id, users.name, orders.order_id, orders.product, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id;
このクエリでは、users
テーブルと orders
テーブルを JOIN
句を使用して結合しています。ON
句では、users
テーブルの id
カラムと orders
テーブルの user_id
カラムを結合条件として指定しています。
結果
上記のクエリを実行すると、ユーザーごとの注文情報が取得できます。
+----+------+----------+---------+--------+
| id | name | order_id | product | amount |
+----+------+----------+---------+--------+
| 1 | John | 1 | Laptop | 800.00|
| 1 | John | 2 | Mouse | 20.00|
| 2 | Jane | 3 | Monitor | 500.00|
+----+------+----------+---------+--------+
このように、users
テーブルと orders
テーブルが結合され、ユーザーごとの注文情報が一つの結果セットに表示されます。