LEFT JOIN en SQL

La cláusula LEFT JOIN en SQL devuelve todas las filas de la tabla izquierda y, cuando existe coincidencia, los datos de la tabla derecha. Si no hay pareja, las columnas de la derecha aparecen como NULL .

LEFT JOIN en SQL es una pieza habitual del flujo SQL: consultar, filtrar, agrupar o modificar datos. Cada ejemplo usa tablas de demostración para que puedas experimentar sin riesgo.

Cómo practicar: ejecuta la consulta tal cual, revisa columnas y tipos, luego cambia un filtro o un alias y vuelve a ejecutar.

LEFT JOIN en SQL es una pieza habitual del flujo SQL: consultar, filtrar, agrupar o modificar datos. Cada ejemplo usa tablas de demostración para que puedas experimentar sin riesgo.

Cómo practicar: ejecuta la consulta tal cual, revisa columnas y tipos, luego cambia un filtro o un alias y vuelve a ejecutar.

A diferencia de INNER JOIN , no se pierden filas de la tabla principal. Es útil para ver «quién no tiene pedidos», «qué productos no se han vendido», etc.

En los ejemplos unimos Clientes (izquierda) con Pedidos (derecha) por ID_Cliente .


Sintaxis LEFT JOIN

La sintaxis indica el orden de argumentos y palabras clave. Copia la plantilla y sustituye nombres de columnas o literales entre comillas simples.

Plantilla

    SELECT columna1, columna2, ...
FROM tabla_izquierda
LEFT JOIN tabla_derecha
        ON tabla_izquierda.clave = tabla_derecha.clave;
  
Diagrama LEFT JOIN: todas las filas de la Tabla A más las coincidencias de la Tabla B
Con LEFT JOIN , la tabla escrita a la izquierda del JOIN siempre aparece completa.

Ejemplo LEFT JOIN: clientes y pedidos

Todos los clientes y su pedido si existe; si no hay pedido, ID_Pedido será NULL :

Clientes con o sin pedido

    SELECT Clientes.Nombre_Cliente, Pedidos.ID_Pedido
FROM Clientes
LEFT JOIN Pedidos
        ON Clientes.ID_Cliente = Pedidos.ID_Cliente;
  
Abrir en editor

Resultado: diez filas (todos los clientes). Cinco con número de pedido y cinco con NULL en ID_Pedido .

Nombre_Cliente ID_Pedido
Ana García1
María López2
John Smith5
Carlos RuizNULL
Elena TorresNULL
Extracto del resultado: clientes con pedido y clientes sin pedido ( NULL ).

LEFT JOIN para filtrar sin coincidencia

Para quedarte solo con los que no tienen pedido, filtra WHERE ID_Pedido IS NULL después del LEFT JOIN :

Sin pedidos registrados

    SELECT Clientes.Nombre_Cliente
FROM Clientes
LEFT JOIN Pedidos
        ON Clientes.ID_Cliente = Pedidos.ID_Cliente
WHERE Pedidos.ID_Pedido IS NULL;
  
Abrir en editor

Resultado: cinco clientes sin ningún pedido en la base de datos de demostración (por ejemplo, Carlos Ruiz o Elena Torres).


Resumen

  • LEFT JOIN conserva todas las filas de la tabla izquierda.
  • Si no hay coincidencia a la derecha, las columnas de esa tabla valen NULL .
  • WHERE … IS NULL después del join permite listar «los que no tienen pareja».
  • Contrasta con INNER JOIN , que solo muestra coincidencias.

Cómo practicar en el editor

1. Pulsa Pruébalo tú mismo en un ejemplo.
2. Cambia un filtro, columna o literal.
3. Ejecuta y compara el resultado con la tabla de ejemplo.


Practica con ejercicios

Repasa la lección con consultas sobre Clientes (Elena Torres, Valencia…) y Productos (pera, mango, fresa) de nuestra base demo.

Ejercicio: Todos los clientes y sus pedidos

Practica LEFT JOIN para ver clientes con o sin pedidos. Usa la tabla Clientes de la demo (Elena Torres, Valencia…).

Consulta

    SELECT Clientes.Nombre_Cliente, Pedidos.ID_Pedido
FROM Clientes
LEFT JOIN Pedidos ON Clientes.ID_Cliente = Pedidos.ID_Cliente;
  
Abrir en editor

Ejercicio: Clientes sin pedidos

Practica LEFT JOIN con WHERE … IS NULL. Usa la tabla Clientes de la demo (Elena Torres, Valencia…).

Consulta

    SELECT Clientes.Nombre_Cliente
FROM Clientes
LEFT JOIN Pedidos ON Clientes.ID_Cliente = Pedidos.ID_Cliente
WHERE Pedidos.ID_Pedido IS NULL;
  
Abrir en editor

Cómo practicar

1. Pulsa Ejecutar aquí en el bloque.
2. Modifica la consulta (filtro, columnas…).
3. O abre el editor para más espacio.

Comprueba lo aprendido

Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.