Kombinacje – LEFT i RIGHT JOIN

Wprowadzenie do SQL Server

John MacKintosh

Instructor

Uzasadnienie LEFT i RIGHT JOIN

  • Po co używać złączeń LEFT i RIGHT?
  • Jedna tabela może nie mieć dokładnych dopasowań w drugiej:
    • Historia zamówień klientów na potrzeby kampanii marketingowej
    • Lista produktów i historia zwrotów
    • Pacjenci przyjęci, ale jeszcze niewypisani
Wprowadzenie do SQL Server

Uzasadnienie LEFT i RIGHT JOIN

  • Po co używać złączeń LEFT i RIGHT?
  • Jedna tabela może nie mieć dokładnych dopasowań w drugiej:
    • Historia zamówień klientów na potrzeby kampanii marketingowej
    • Lista produktów i historia zwrotów
    • Pacjenci przyjęci, ale jeszcze niewypisani
Wprowadzenie do SQL Server

Tabela przyjęć

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

Tabela wypisów

+------------+------------+
| 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       |
+------------+----------+------------+
Wprowadzenie do SQL Server

SKŁADNIA LEFT JOIN

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

Wprowadzenie do 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       |
+------------+----------+------------+
Wprowadzenie do SQL Server

RIGHT JOIN

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

Wprowadzenie do SQL Server

Wyniki 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       |
+------------+----------+------------+
Wprowadzenie do SQL Server

Podsumowanie

  • INNER JOIN: zwraca tylko pasujące wiersze
  • LEFT JOIN (lub RIGHT JOIN): wszystkie wiersze z tabeli głównej oraz dopasowania z tabeli łączonej
  • NULL: wyświetlane, gdy brak dopasowania
  • LEFT JOIN i RIGHT JOIN mogą być stosowane zamiennie
Wprowadzenie do SQL Server

Wprowadzenie do SQL Server

Czas na ćwiczenia!

Wprowadzenie do SQL Server

Preparing Video For Download...