Combinații - JOIN stânga & dreapta

Introducere în SQL Server

John MacKintosh

Instructor

Justificarea join-urilor LEFT și RIGHT

  • De ce avem nevoie de join-uri LEFT și RIGHT?
  • O tabelă poate să nu aibă corespondențe exacte în alta:
    • Istoricul comenzilor clienților pentru campanii de marketing
    • Lista produselor și istoricul retururilor
    • Pacienți internați, dar neexternați încă
Introducere în SQL Server

Justificarea join-urilor LEFT și RIGHT

  • De ce avem nevoie de join-uri LEFT și RIGHT?
  • O tabelă poate să nu aibă corespondențe exacte în alta:
    • Istoricul comenzilor clienților pentru campanii de marketing
    • Lista produselor și istoricul retururilor
    • Pacienți internați, dar neexternați încă
Introducere în SQL Server

Tabela Admissions

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

Tabela 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       |
+------------+----------+------------+
Introducere în SQL Server

SINTAXA LEFT JOIN

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

Introducere în 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       |
+------------+----------+------------+
Introducere în SQL Server

RIGHT JOIN

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

Introducere în SQL Server

Rezultatele 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       |
+------------+----------+------------+
Introducere în SQL Server

Rezumat

  • INNER JOIN: Returnează doar rândurile cu corespondență
  • LEFT JOIN (sau RIGHT JOIN): Toate rândurile din tabela principală plus corespondențele din tabela alăturată
  • NULL: Afișat dacă nu există corespondență
  • LEFT JOIN și RIGHT JOIN pot fi interschimbabile
Introducere în SQL Server

Introducere în SQL Server

Să exersăm!

Introducere în SQL Server

Preparing Video For Download...