Al terminar esta lección podrás
- Escribir un INNER JOIN.
- Elegir la condición ON.
- Interpretar las filas que desaparecen.
Antes de empezar: Relaciones y claves. Explica en una frase qué recuerdas antes de continuar.
La idea, sin código
INNER JOIN compara filas mediante ON. Solo aparecen las combinaciones cuya condición es verdadera en ambas tablas.
Pregunta guía: ¿qué representa cada fila antes y después de aplicar este concepto?
Sintaxis mínima
FROM tabla_a AS a
INNER JOIN tabla_b AS b
ON a.clave_foranea = b.clave_primariaPrimer ejemplo guiado
| id | cliente_id | fecha | total | estado |
|---|---|---|---|---|
| 101 | 1 | 2026-07-02 | 65 | enviado |
| 102 | 2 | 2026-07-04 | 189 | pendiente |
| 103 | 1 | 2026-07-09 | 44 | enviado |
| 104 | 3 | 2026-07-11 | 899 | cancelado |
| 105 | 5 | 2026-07-15 | 118 | enviado |
| id | nombre | ciudad | |
|---|---|---|---|
| 1 | Ana | Madrid | ana@ejemplo.es |
| 2 | Luis | Valencia | luis@ejemplo.es |
| 3 | Marta | Madrid | NULL |
| 4 | Omar | Sevilla | omar@ejemplo.es |
| 5 | Nora | Bilbao | nora@ejemplo.es |
Analiza la consulta antes de comprobar el resultado:
SELECT p.id, c.nombre, p.total
FROM pedidos AS p
INNER JOIN clientes AS c
ON p.cliente_id = c.id
ORDER BY p.id;| id | nombre | total |
|---|---|---|
| 101 | Ana | 65 |
| 102 | Luis | 189 |
| 103 | Ana | 44 |
| 104 | Marta | 899 |
| 105 | Nora | 118 |
Qué ocurre paso a paso
- FROM parte de pedidos.
- ON busca el cliente cuyo id coincide con cliente_id.
- SELECT combina columnas de ambas tablas.
Error frecuente
Consulta o razonamiento problemático
ON p.id = c.idLos valores podrían coincidir por casualidad, pero no representan la relación entre cliente y pedido.
Práctica guiada
Resuelve una sola dificultad cada vez
Muestra id del pedido, nombre del cliente y estado.
Solución razonada
SELECT p.id, c.nombre, p.estado FROM pedidos AS p INNER JOIN clientes AS c ON p.cliente_id = c.id;La condición ON expresa la relación real; los alias evitan nombres largos.
Comprueba: identifica qué parte recupera, filtra, transforma, relaciona o modifica los datos.
Ahora sin guía
Transfiere lo aprendido
Muestra título y autor de cada libro.
Comparar con una solución posible
SELECT l.titulo, a.nombre AS autor
FROM libros AS l
INNER JOIN autores AS a ON l.autor_id = a.id;Puede existir otra solución válida. Comprueba que produce el resultado pedido y que puedes explicar cada cláusula.
Resumen para llevarte
- INNER JOIN conserva coincidencias.
- ON debe expresar una relación real.
- Los alias de tabla mejoran la lectura.
Siguiente paso: Continúa con LEFT JOIN: conservar la tabla principal.