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;
  
Abrir en editor

Resultado: cinco filas — un pedido por cada coincidencia entre Pedidos y Clientes .

ID_Pedido Nombre_Cliente
1Ana García
2María López
3Elena Torres
4Luis Pérez
5John Smith

Tablas para INNER JOIN en la demo

La relación entre Pedidos y Clientes usa ID_Cliente :

ID_Cliente Nombre_Cliente Ciudad Pais
1Ana GarcíaMadridEspaña
2Luis PérezBarcelonaEspaña
3María LópezValenciaEspaña
6John SmithLondonUK
Tabla Clientes (extracto de la base de datos de demostración).
ID_Pedido ID_Cliente Fecha
112024-01-15
232024-01-18
352024-02-02
422024-02-10
562024-02-14
Tabla Pedidos. La columna ID_Cliente enlaza con Clientes.
Diagrama INNER JOIN: solo las coincidencias entre Tabla A y Tabla B entran en el resultado
En un 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;
  
Abrir en editor

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;
  
Abrir en editor

Resumen

  • INNER JOIN devuelve solo filas con coincidencia en ambas tablas.
  • La condición de unión va en ON (no en WHERE , salvo filtros adicionales).
  • Puedes seleccionar columnas de cualquiera de las tablas unidas.
  • Si necesitas conservar filas sin pareja, usa LEFT JOIN en 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;
  
Abrir en editor

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;
  
Abrir en editor

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;
  
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.