INNER JOIN en SQL
La cláusula
INNER JOIN
en SQL combina filas de dos tablas cuando un valor coincide en ambas. Solo aparecen registros que tienen pareja en las dos tablas; el resto queda fuera del resultado.
INNER 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.
La relación se define con
ON
, indicando qué columnas deben coincidir (por ejemplo
Pedidos.ID_Cliente = Clientes.ID_Cliente
). Es la forma más habitual de consultar datos repartidos en varias tablas relacionadas.
En nuestra base de datos de demostración,
Pedidos
guarda qué cliente hizo cada pedido y
Clientes
los datos del cliente. Con
INNER JOIN
puedes ver el nombre del cliente junto al número de pedido. Si no has leído la introducción general, empieza por la lección
JOIN en SQL
.
Sintaxis INNER JOIN
Plantilla
SELECT columna1, columna2, ...
FROM tabla_izquierda
INNER JOIN tabla_derecha
ON tabla_izquierda.clave = tabla_derecha.clave;
Ejemplo INNER JOIN: Pedidos y Clientes
Pedidos y clientes que coinciden — la relación usa
ID_Cliente
en ambas tablas:
ID de pedido y nombre de cliente
SELECT Pedidos.ID_Pedido, Clientes.Nombre_Cliente
FROM Pedidos
INNER JOIN Clientes
ON Pedidos.ID_Cliente = Clientes.ID_Cliente;
Resultado: cinco filas — un pedido por cada coincidencia entre Pedidos y Clientes .
| ID_Pedido | Nombre_Cliente |
|---|---|
| 1 | Ana García |
| 2 | María López |
| 3 | Elena Torres |
| 4 | Luis Pérez |
| 5 | John Smith |
Tablas para INNER JOIN en la demo
La relación entre
Pedidos
y
Clientes
usa
ID_Cliente
:
| ID_Cliente | Nombre_Cliente | Ciudad | Pais |
|---|---|---|---|
| 1 | Ana García | Madrid | España |
| 2 | Luis Pérez | Barcelona | España |
| 3 | María López | Valencia | España |
| 6 | John Smith | London | UK |
| ID_Pedido | ID_Cliente | Fecha |
|---|---|---|
| 1 | 1 | 2024-01-15 |
| 2 | 3 | 2024-01-18 |
| 3 | 5 | 2024-02-02 |
| 4 | 2 | 2024-02-10 |
| 5 | 6 | 2024-02-14 |
ID_Cliente enlaza con Clientes.
INNER JOIN
, solo entran las filas con coincidencia en las dos tablas (zona central del diagrama).
Resultado del INNER JOIN entre Pedidos y Clientes en la demo.
INNER JOIN con más columnas
Puedes seleccionar columnas de cualquiera de las tablas unidas. Aquí añadimos la fecha del pedido:
Pedido, cliente y fecha
SELECT Pedidos.ID_Pedido, Clientes.Nombre_Cliente, Pedidos.Fecha
FROM Pedidos
INNER JOIN Clientes
ON Pedidos.ID_Cliente = Clientes.ID_Cliente;
INNER JOIN entre Productos y Categorias
Otra relación habitual: cada producto pertenece a una categoría. Une
Productos.ID_Categoria
con
Categorias.ID_Categoria
:
Producto y su categoría
SELECT Productos.Nombre_Producto, Categorias.Nombre_Categoria
FROM Productos
INNER JOIN Categorias
ON Productos.ID_Categoria = Categorias.ID_Categoria;
Resumen
-
INNER JOINdevuelve solo filas con coincidencia en ambas tablas. -
La condición de unión va en
ON(no enWHERE, salvo filtros adicionales). - Puedes seleccionar columnas de cualquiera de las tablas unidas.
-
Si necesitas conservar filas sin pareja, usa
LEFT JOINen la siguiente lección.
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: Pedidos con nombre de cliente
Practica INNER JOIN entre Pedidos y Clientes. Usa la tabla Clientes de la demo (Elena Torres, Valencia…).
Consulta
SELECT Pedidos.ID_Pedido, Clientes.Nombre_Cliente
FROM Pedidos
INNER JOIN Clientes ON Pedidos.ID_Cliente = Clientes.ID_Cliente;
Ejercicio: JOIN con fecha de pedido
Practica INNER JOIN mostrando también la fecha del pedido. Usa la tabla Clientes de la demo (Elena Torres, Valencia…).
Consulta
SELECT Pedidos.ID_Pedido, Clientes.Nombre_Cliente, Pedidos.Fecha
FROM Pedidos
INNER JOIN Clientes ON Pedidos.ID_Cliente = Clientes.ID_Cliente;
Ejercicio: Productos y categorías
Practica INNER JOIN entre Productos y Categorias. Usa la tabla Clientes de la demo (Elena Torres, Valencia…).
Consulta
SELECT Productos.Nombre_Producto, Categorias.Nombre_Categoria
FROM Productos
INNER JOIN Categorias ON Productos.ID_Categoria = Categorias.ID_Categoria;
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.