Kombinace LEFT a RIGHT joinů

Introduction to SQL Server

John MacKintosh

Instructor

Důvody pro LEFT a RIGHT joiny

  • Proč potřebujeme LEFT a RIGHT joiny?
  • Jedna tabulka nemusí mít přesnou shodu v druhé:
    • Historie objednávek zákazníků pro marketingovou kampaň
    • Seznam produktů a historie vrácení
    • Přijatí pacienti, kteří ještě nebyli propuštěni
Introduction to SQL Server

Důvody pro LEFT a RIGHT joiny

  • Proč potřebujeme LEFT a RIGHT joiny?
  • Jedna tabulka nemusí mít přesnou shodu v druhé:
    • Historie objednávek zákazníků pro marketingovou kampaň
    • Seznam produktů a historie vrácení
    • Přijatí pacienti, kteří ještě nebyli propuštěni
Introduction to SQL Server

Tabulka přijetí

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

Tabulka propuštění

+------------+------------+
| 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       |
+------------+----------+------------+
Introduction to SQL Server

SYNTAXE LEFT JOIN

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

Introduction to 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       |
+------------+----------+------------+
Introduction to SQL Server

RIGHT JOIN

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

Introduction to SQL Server

Výsledky 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       |
+------------+----------+------------+
Introduction to SQL Server

Shrnutí

  • INNER JOIN: Vrací pouze shodné řádky
  • LEFT JOIN (nebo RIGHT JOIN): Všechny řádky z hlavní tabulky a shody z připojené tabulky
  • NULL: Zobrazí se, pokud shoda neexistuje
  • LEFT JOIN a RIGHT JOIN jsou vzájemně zaměnitelné
Introduction to SQL Server

Introduction to SQL Server

Pojďme si to procvičit!

Introduction to SQL Server

Preparing Video For Download...