Combina y compara: LEFT y RIGHT joins

Introducción a SQL Server

John MacKintosh

Instructor

Motivo de los LEFT y RIGHT joins

  • ¿Por qué necesitamos LEFT y RIGHT joins?
  • Una tabla puede no tener coincidencia exacta en otra:
    • Historial de pedidos para una campaña de marketing
    • Lista de productos y historial de devoluciones
    • Pacientes admitidos pero aún no dados de alta
Introducción a SQL Server

Motivo de los LEFT y RIGHT joins

  • ¿Por qué necesitamos LEFT y RIGHT joins?
  • Una tabla puede no tener coincidencia exacta en otra:
    • Historial de pedidos para una campaña de marketing
    • Lista de productos y historial de devoluciones
    • Pacientes admitidos pero aún no dados de alta
Introducción a SQL Server

Tabla de admisiones

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

Tabla de altas

+------------+------------+
| 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       |
+------------+----------+------------+
Introducción a SQL Server

Sintaxis de LEFT JOIN

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

Introducción a 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       |
+------------+----------+------------+
Introducción a SQL Server

RIGHT JOIN

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

Introducción a SQL Server

Resultados de 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       |
+------------+----------+------------+
Introducción a SQL Server

Resumen

  • INNER JOIN: solo devuelve filas coincidentes
  • LEFT JOIN (o RIGHT JOIN): todas las filas de la tabla principal más coincidencias de la tabla unida
  • NULL: se muestra si no hay coincidencia
  • LEFT JOIN y RIGHT JOIN pueden intercambiarse
Introducción a SQL Server

Introducción a SQL Server

¡Vamos a practicar!

Introducción a SQL Server

Preparing Video For Download...