Комбінуємо — об'єднання LEFT і RIGHT

Вступ до SQL Server

John MacKintosh

Instructor

Чому потрібні LEFT і RIGHT об'єднання

  • Навіщо потрібні об'єднання LEFT і RIGHT?
  • В одній таблиці може не бути точних відповідників в іншій:
    • Історія замовлень клієнта для маркетингової кампанії
    • Перелік товарів і історія повернень
    • Пацієнти госпіталізовані, але ще не виписані
Вступ до SQL Server

Чому потрібні LEFT і RIGHT об'єднання

  • Навіщо потрібні об'єднання LEFT і RIGHT?
  • В одній таблиці може не бути точних відповідників в іншій:
    • Історія замовлень клієнта для маркетингової кампанії
    • Перелік товарів і історія повернень
    • Пацієнти госпіталізовані, але ще не виписані
Вступ до SQL Server

Таблиця Admissions

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

Таблиця Discharges

+------------+------------+
| 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 JOIN і RIGHT JOIN можуть бути взаємозамінні
Вступ до SQL Server

Вступ до SQL Server

Давайте потренуємось!

Вступ до SQL Server

Preparing Video For Download...