組み合わせて使う:LEFT と RIGHT 結合

SQL Server 入門

John MacKintosh

Instructor

LEFT / RIGHT 結合の目的

  • なぜ LEFTRIGHT 結合が必要か
  • 一方のテーブルに完全一致がない場合がある:
    • マーケ施策向けの顧客注文履歴
    • 製品一覧と返品履歴
    • 入院済みだが未退院の患者
SQL Server 入門

LEFT / RIGHT 結合の目的

  • なぜ LEFTRIGHT 結合が必要か
  • 一方のテーブルに完全一致がないことがある:
    • マーケ施策向けの顧客注文履歴
    • 製品一覧と返品履歴
    • 入院済みだが未退院の患者
SQL Server 入門

入院テーブル

+------------+----------+
| Patient_ID | Admitted | 
|------------+----------|
| 1          | 1        |
| 2          | 1        |
| 3          | 1        |
| 4          | 1        |
| 5          | 1        |
+------------+----------+

退院テーブル

+------------+------------+
| Patient_ID | Discharged | 
|------------+------------|
| 1          | 1          |
| 3          | 1          |
| 4          | 1          |
+------------+------------+

INNER JOIN:

+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
+------------+----------+------------+

LEFT JOIN:

+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 2          | 1        | NULL       |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
| 5          | 1        | NULL       |
+------------+----------+------------+
SQL Server 入門

LEFT JOIN の構文

SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Admitted 
LEFT JOIN Discharged ON Discharged.Patient_ID = Admitted.Patient_ID;

SQL Server 入門
SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Admitted 
LEFT JOIN Discharged ON Discharged.Patient_ID = Admitted.Patient_ID;
+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 2          | 1        | NULL       |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
| 5          | 1        | NULL       |
+------------+----------+------------+
SQL Server 入門

RIGHT JOIN

SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Discharged 
RIGHT JOIN Admitted ON Admitted.Patient_ID = Discharged.Patient_ID;

SQL Server 入門

RIGHT JOIN の結果

SELECT 
  Admitted.Patient_ID, 
  Admitted, 
  Discharged 
FROM Discharged 
RIGHT JOIN Admitted ON Admitted.Patient_ID = Discharged.Patient_ID;
+------------+----------+------------|
| Patient_ID | Admitted | Discharged |
|------------+----------|------------|
| 1          | 1        | 1          |
| 2          | 1        | NULL       |
| 3          | 1        | 1          |
| 4          | 1        | 1          |
| 5          | 1        | NULL       |
+------------+----------+------------+
SQL Server 入門

まとめ

  • INNER JOIN: 一致する行のみを返す
  • LEFT JOIN(または RIGHT JOIN): 主テーブルの全行+結合先の一致
  • NULL: 一致なしの場合に表示
  • LEFT JOINRIGHT JOIN は入れ替え可能
SQL Server 入門

SQL Server 入門

Ayo berlatih!

SQL Server 入門

Preparing Video For Download...