Table of Contents
Ejemplo práctico de LEFT JOIN en SQL: Mostrar todos los clientes aunque no tengan pedidos
En este ejercicio práctico aprenderás a usar la cláusula LEFT JOIN
en SQL para combinar dos tablas. El objetivo es mostrar todos los clientes, aunque no tengan pedidos registrados.
Vamos a trabajar con una base de datos llamada tiendaonline
, que contiene dos tablas principales:
clientes
: almacena información sobre los clientes.pedidos
: almacena los pedidos realizados por los clientes.
Paso 1: Usar la base de datos
USE tiendaonline;
Paso 2: Ver el contenido de las tablas
Antes de realizar la consulta, es recomendable ver los datos disponibles:
SELECT * FROM tiendaonline.clientes;
SELECT * FROM tiendaonline.pedidos;
Paso 3: Usar LEFT JOIN para mostrar todos los clientes con sus pedidos (si los tienen)
La siguiente consulta une las tablas clientes
y pedidos
, mostrando el nombre del cliente y la fecha de su pedido. Si el cliente no ha hecho ningún pedido, la columna de fecha_pedido
aparecerá como NULL
.
SELECT c.nombre, p.fecha_pedido
FROM tiendaonline.clientes AS c
LEFT JOIN tiendaonline.pedidos AS p
ON p.id_cliente = c.id_cliente;
¿Qué hace LEFT JOIN?
La cláusula LEFT JOIN
devuelve todos los registros de la tabla de la izquierda (clientes
), y los registros coincidentes de la tabla de la derecha (pedidos
). Si no hay coincidencia, se muestra NULL
en las columnas de la tabla de la derecha.

Esto es útil para detectar, por ejemplo, qué clientes todavía no han hecho pedidos.
Usar LEFT JOIN
es una herramienta muy poderosa cuando necesitas mostrar todos los registros de una tabla principal, sin perder información por falta de coincidencia en la tabla relacionada. En este caso, nos permite listar todos los clientes, con o sin pedidos.
LEFT JOIN
: muestra todos los registros de la tabla de la izquierda, aunque no haya coincidencias en la tabla de la derecha.INNER JOIN
: muestra solo los registros que tienen coincidencia en ambas tablas.
Aparecerá una fila por cada pedido. Es decir, si un cliente tiene tres pedidos, su nombre se mostrará tres veces, una por cada fecha de pedido.
Puedes agregar una condición para filtrar aquellos clientes con NULL
en la columna de fecha_pedid
o.
SELECT c.nombre
FROM tiendaonline.clientes AS c
LEFT JOIN tiendaonline.pedidos AS p
ON p.id_cliente = c.id_cliente
WHERE p.fecha_pedido IS NULL;
Sí, especialmente en bases de datos grandes. Si solo necesitas los registros con coincidencias, INNER JOIN
es más rápido.
Seguir leyendo: