Módulo 4 · Relacionar tablas

Une coincidencias con INNER JOIN

Combina filas relacionadas y conserva solo las que tienen pareja.

22 minNivel InicialAntes necesitas: Relaciones y claves

0 de 45 lecciones

Al terminar, podrás

  • Relacionar una clave foránea con su clave primaria.
  • Seleccionar columnas de dos tablas mediante alias.
  • Predecir qué filas se descartan cuando no existe coincidencia.

Recupera lo aprendido: ¿Qué columna de pedidos apunta a clientes.id: id o cliente_id?

La idea clave

INNER JOIN combina una fila de la primera tabla con cada fila de la segunda que cumpla la condición escrita en ON. Las filas sin coincidencia no aparecen.

Modelo mental: la cláusula ON es la regla de emparejamiento. No unes “tablas por proximidad”; unes valores concretos, como pedidos.cliente_id con clientes.id.

La sintaxis básica

Estructura
SELECT a.columna, b.columna
FROM tabla_a AS a
INNER JOIN tabla_b AS b
  ON a.clave_foranea = b.clave_primaria;

Los alias reducen la repetición y permiten indicar con claridad de qué tabla procede cada columna. Es especialmente importante cuando ambas tablas tienen una columna llamada id.

Ejemplo paso a paso

Primeros seis pedidos
idcliente_idestadototal
1011enviado128,40
1022pendiente49,50
1031cancelado24,90
1043enviado179,00
1054pendiente69,90
1065enviado1088,00
Clientes referenciados
idnombre
1Ana Torres
2Luis Martín
3Marta Ruiz
4Diego López
5Sara Gómez

Queremos reemplazar cada identificador de cliente por un nombre legible.

SQL
SELECT p.id AS pedido,
       c.nombre AS cliente,
       p.estado,
       p.total
FROM pedidos AS p
INNER JOIN clientes AS c
  ON p.cliente_id = c.id
ORDER BY p.id
LIMIT 6;
Resultado esperado
pedidoclienteestadototal
101Ana Torresenviado128,40
102Luis Martínpendiente49,50
103Ana Torrescancelado24,90
104Marta Ruizenviado179,00
105Diego Lópezpendiente69,90
106Sara Gómezenviado1088,00

Cómo funciona

  1. Para el pedido 101, p.cliente_id vale 1.
  2. La condición busca la fila de clientes cuyo id también vale 1.
  3. El resultado combina las columnas solicitadas de ambas filas.
  4. El proceso se repite para cada pedido; si no existiera cliente coincidente, ese pedido no aparecería.
Comprueba tu comprensión

¿Qué ocurre con una fila de la izquierda sin coincidencia en un INNER JOIN?

Un error habitual

Omitir o escribir mal la condición de unión

Condición incorrecta
SELECT p.id, c.nombre
FROM pedidos AS p
INNER JOIN clientes AS c
  ON p.id = c.id;

Los identificadores de pedido y cliente representan entidades distintas. La relación real está en p.cliente_id = c.id. Una condición equivocada puede devolver pocas filas, ninguna o coincidencias sin sentido.

Practica con datos

Laboratorio SQL

Resuelve la consulta

Pendiente

Escribe una consulta que devuelva id de pedido, nombre del cliente y estado para todos los pedidos con su cliente.

Resultado esperado: 18 filas con id, nombre, estado. El orden de las filas no importa.

Ver tablas y datos

Cargando la estructura del ejercicio…

La consulta usa datos ficticios y se ejecuta solo en este navegador.

Fuentes técnicas consultadas

Las referencias describen INNER JOIN como la combinación de pares de filas que satisfacen la expresión de unión y documentan la sintaxis con ON.

Comprueba si puedes explicarlo

Un cliente tiene tres pedidos. Al relacionarlos con INNER JOIN, ¿cuántas veces puede aparecer su nombre?

Ver respuesta razonada

Tres veces, una por pedido. Son tres relaciones válidas, no necesariamente un error. Una fila representa un pedido con los datos de su cliente.

Responde antes de abrir la explicación. Si necesitaste ayuda, cierra la respuesta y vuelve a explicarlo con tus palabras antes de dar la lección por aprendida.

Qué debes recordar

  • ON expresa la regla exacta de emparejamiento.
  • INNER JOIN solo conserva filas que encuentran coincidencia.
  • Califica las columnas con alias para evitar ambigüedades.

A continuación: Continúa con Conserva todas las filas con LEFT JOIN.

Conceptos relacionados