Combine e compare - LEFT e RIGHT joins

Introdução ao SQL Server

John MacKintosh

Instructor

Por que usar LEFT e RIGHT joins

  • Por que precisamos de LEFT e RIGHT joins?
  • Uma tabela pode não ter correspondência exata na outra:
    • Histórico de pedidos de clientes para campanha de marketing
    • Lista de produtos e histórico de devoluções
    • Pacientes internados ainda não liberados
Introdução ao SQL Server

Por que usar LEFT e RIGHT joins

  • Por que precisamos de LEFT e RIGHT joins?
  • Uma tabela pode não ter correspondência exata na outra:
    • Histórico de pedidos de clientes para campanha de marketing
    • Lista de produtos e histórico de devoluções
    • Pacientes internados ainda não liberados
Introdução ao 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       |
+------------+----------+------------+
Introdução ao SQL Server

Sintaxe do LEFT JOIN

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

Introdução ao 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       |
+------------+----------+------------+
Introdução ao SQL Server

RIGHT JOIN

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

Introdução ao SQL Server

Resultados do 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       |
+------------+----------+------------+
Introdução ao SQL Server

Resumo

  • INNER JOIN: retorna só as linhas que batem
  • LEFT JOIN (ou RIGHT JOIN): todas as linhas da tabela principal + correspondências da tabela unida
  • NULL: aparece quando não há correspondência
  • LEFT JOIN e RIGHT JOIN podem ser intercambiáveis
Introdução ao SQL Server

Introdução ao SQL Server

Vamos praticar!

Introdução ao SQL Server

Preparing Video For Download...