はじめに
複数テーブルの結合についてのメモ
参考
テーブルの結合
結合条件が満たされた行を一つ一つ繋ぐこと
主な結合
JOIN
- 使いどころ
- 2つのテーブルの間で完全に一致する行だけを取得したい場合
-
INNER JOIN
ともかけるが、省略されたJOIN
を用いることが多い - 繋ぐべき右表の行が複数あるとき、左表の行を複製して結合するため、元の左表の行数より増える
SELECT
orders.order_id, customers.customer_name
FROM
orders
JOIN customers
ON orders.customer_id = customers.customer_id;
LEFT JOIN
- 使いどころ
- 必ず左テーブルの情報は取得したい場合
- 左テーブルに存在すれば、右テーブルにマッチする情報が存在しない場合でもNULLで取得する
-
LEFT OUTER JOIN
ともかけるが、省略されたLEFT JOIN
を用いることが多い
SELECT
employees.emp_id, employees.emp_name, departments.dept_name
FROM
employees
LEFT JOIN departments
ON employees.emp_id = departments.emp_id;
RIGHT JOIN
- 使いどころ
- 必ず右テーブルの情報は取得したい場合
- 右テーブルに存在すれば、左テーブルにマッチする情報が存在しない場合でもNULLで取得する
-
RIGHT OUTER JOIN
ともかけるが、省略されたRIGHT JOIN
を用いることが多い - LEFT JOINの逆
SELECT
users.name, orders.order_date, orders.order_amount
FROM
users
RIGHT JOIN orders
ON users.user_id = orders.user_id;