...

LEFT JOIN en SQL: combina datos sin perder información

Cuando trabajas con bases de datos, a menudo necesitas unir información de varias tablas. El LEFT JOIN te permite combinar datos asegurando que todos los registros de la tabla principal (izquierda) se incluyan en el resultado, incluso si no existe una coincidencia en la tabla secundaria (derecha).

Es ideal para detectar datos faltantes, crear reportes completos o analizar información donde algunos registros no tienen relación directa en otra tabla.

En este artículo aprenderás cómo funciona el LEFT JOIN, en qué se diferencia del INNER JOIN y cómo aplicarlo en distintos motores de bases de datos como SQL Server, MySQL, PostgreSQL y SQLite, con ejemplos prácticos que podrás ejecutar en db-fiddle.com.


¿Qué es el LEFT JOIN en SQL?

El LEFT JOIN (también llamado Left Outer Join) es un tipo de unión que devuelve todos los registros de la tabla izquierda, junto con los datos coincidentes de la tabla derecha.
Si no encuentra coincidencias en la tabla derecha, rellena con valores NULL en esas columnas.

Esto lo hace perfecto para:

  • Detectar registros sin relación.
  • Generar listados completos donde no quieres perder información.
  • Identificar errores en la integridad de datos.

Sintaxis básica de LEFT JOIN

La sintaxis general es:

SELECT columnas
FROM tabla_izquierda AS A
LEFT JOIN tabla_derecha AS B
  ON A.columna = B.columna;

Explicación:

  • tabla_izquierda → la tabla principal, cuyos registros siempre se mostrarán.
  • tabla_derecha → la tabla secundaria, cuyos datos se mostrarán solo si hay coincidencias.
  • ON → define la condición que relaciona ambas tablas.

Estructura de datos para los ejemplos

Para los ejemplos, usaremos dos tablas: empleados y departamentos.

CREATE TABLE departamentos (
    id_departamento INTEGER PRIMARY KEY,
    nombre_departamento TEXT NOT NULL
);

CREATE TABLE empleados (
    id_empleado INTEGER PRIMARY KEY,
    nombre TEXT NOT NULL,
    id_departamento INTEGER
);

Datos ficticios:

INSERT INTO departamentos (id_departamento, nombre_departamento) VALUES
(1, 'Recursos Humanos'),
(2, 'Ventas'),
(3, 'Tecnología');

INSERT INTO empleados (id_empleado, nombre, id_departamento) VALUES
(1, 'Ana', 1),
(2, 'Luis', 2),
(3, 'Carlos', NULL),
(4, 'María', 3),
(5, 'Pedro', NULL);

Puedes ejecutar este ejemplo directamente en db-fiddle.com para practicar.


Ejemplo práctico: LEFT JOIN básico

Queremos obtener una lista de todos los empleados y el nombre de su departamento, incluyendo a aquellos que no tienen un departamento asignado.

SELECT e.nombre AS Empleado,
       d.nombre_departamento AS Departamento
FROM empleados AS e
LEFT JOIN departamentos AS d
  ON e.id_departamento = d.id_departamento;

Resultado:

EmpleadoDepartamento
AnaRecursos Humanos
LuisVentas
CarlosNULL
MaríaTecnología
PedroNULL

Interpretación:

  • Carlos y Pedro aparecen en el resultado aunque no tengan un departamento asignado.
  • En esos casos, la columna Departamento muestra NULL.

LEFT JOIN vs INNER JOIN

Si usáramos un INNER JOIN en el ejemplo anterior:

SELECT e.nombre AS Empleado,
       d.nombre_departamento AS Departamento
FROM empleados AS e
INNER JOIN departamentos AS d
  ON e.id_departamento = d.id_departamento;

Resultado:

EmpleadoDepartamento
AnaRecursos Humanos
LuisVentas
MaríaTecnología

Diferencia clave:

  • El INNER JOIN excluye a Carlos y Pedro porque no tienen coincidencias en la tabla de departamentos.
  • El LEFT JOIN los incluye y muestra NULL en lugar del nombre de departamento.

Notas sobre rendimiento y compatibilidad

El LEFT JOIN funciona en la mayoría de los motores de bases de datos, pero considera estas recomendaciones:

  1. SQL Server
    • Sintaxis estándar, igual que en el ejemplo.
    • Indexar las columnas usadas en la condición ON mejora el rendimiento.
  2. MySQL y PostgreSQL
    • Utilizan la misma sintaxis estándar.
    • PostgreSQL maneja bien grandes volúmenes de datos, pero siempre verifica el plan de ejecución.
  3. SQLite
    • Totalmente compatible con la sintaxis estándar.
    • Ideal para prácticas y ejemplos ligeros.

Tip de rendimiento:
Evita usar SELECT * en producción. En su lugar, selecciona solo las columnas necesarias.


Buenas prácticas al usar LEFT JOIN

  • Define siempre la condición ON claramente para evitar combinaciones inesperadas.
  • Usa alias para mejorar la legibilidad de las consultas (e para empleados, d para departamentos).
  • Incluye solo las columnas necesarias en el SELECT.
  • Revisa el resultado con datos de prueba antes de usarlo en producción.
  • Si necesitas filtrar por columnas de la tabla derecha, coloca esas condiciones en el WHERE con cuidado, o en el ON según el caso.

Conclusión

El LEFT JOIN es fundamental para obtener reportes completos sin perder información de la tabla principal.
Te ayuda a identificar registros faltantes y a mantener la integridad de los datos.

Ahora te toca practicar.
Puedes ejecutar el ejemplo que vimos en este artículo directamente en db-fiddle.com y experimentar con tus propios datos.

Deja un comentario

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.