JOIN en SQL
Una cláusula
JOIN
en SQL combina filas de dos o más tablas relacionadas. Cuando los datos están normalizados, cada tabla guarda una parte de la información y el
JOIN
las vuelve a unir mediante una columna común (clave foránea).
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.
En nuestra base de datos de demostración, cada fila de
Pedidos
indica qué cliente hizo el pedido a través de
ID_Cliente
. Sin
JOIN
tendrías que mirar dos tablas por separado; con él ves pedido y nombre del cliente en una sola consulta.
Esta lección es la introducción general. En la siguiente ( INNER JOIN ) practicarás con el editor.
Sintaxis general de JOIN
Plantilla JOIN
SELECT tabla1.columna, tabla2.columna
FROM tabla1
INNER JOIN tabla2 ON tabla1.clave = tabla2.clave;
Ejemplo JOIN: pedidos y clientes
En SQL estándar,
JOIN
sin más suele equivaler a
INNER JOIN
. El ejemplo siguiente muestra pedidos con el nombre del cliente:
Pedidos con nombre de cliente
SELECT Pedidos.ID_Pedido, Clientes.Nombre_Cliente, Pedidos.Fecha
FROM Pedidos
INNER JOIN Clientes ON Pedidos.ID_Cliente = Clientes.ID_Cliente;
Resultado: cinco filas — un pedido por cada coincidencia entre ambas tablas.
| ID_Pedido | Nombre_Cliente | Fecha |
|---|---|---|
| 1 | Ana García | 2024-01-15 |
| 2 | María López | 2024-01-18 |
| 3 | Elena Torres | 2024-02-02 |
| 4 | Luis Pérez | 2024-02-10 |
| 5 | John Smith | 2024-02-14 |
Tablas relacionadas para JOIN
Observa la columna compartida
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.
JOIN
: la zona coloreada indica qué filas entran en el resultado (Tabla A / Tabla B).
JOIN entre Productos y Categorias
La misma idea sirve para cualquier par de tablas con una columna en común. Aquí enlazamos
Productos.ID_Categoria
con
Categorias.ID_Categoria
:
Nombre de producto y categoría
SELECT Productos.Nombre_Producto, Categorias.Nombre_Categoria
FROM Productos
INNER JOIN Categorias ON Productos.ID_Categoria = Categorias.ID_Categoria;
Resultado: cada producto aparece junto al nombre de su categoría (Bebidas, Lácteos, Carnes…).
| Nombre_Producto | Nombre_Categoria |
|---|---|
| Café expreso | Bebidas |
| Té verde | Bebidas |
| Salsa de tomate | Condimentos |
| Galletas de avena | Repostería |
| Queso manchego | Lácteos |
| … 5 productos más en la demo | |
Tipos de JOIN en SQL
-
INNER JOIN— solo filas con coincidencia en las dos tablas. -
LEFT JOIN— todas las filas de la tabla izquierda; la derecha puede serNULL. -
RIGHT JOIN— igual que LEFT, pero conservando la tabla derecha. -
FULL OUTER JOIN— filas con coincidencia en cualquiera de las dos tablas.
Resumen
-
JOINune tablas por una columna común definida enON. -
Empieza por
INNER JOINsi solo quieres filas que existen en ambas tablas. -
Usa
LEFT JOINpara incluir filas sin pareja (por ejemplo, clientes sin pedidos).
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 JOIN entre Pedidos y Clientes por ID_Cliente. 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 con su categoría
Practica 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.
Desafío de código
Productos con su categoría
Une las tablas Productos y Categorias para mostrar el nombre del producto (pera, mango, fresa…) y el nombre de su categoría.
Código inicial
SELECT Productos.Nombre_Producto, Categorias.Nombre_Categoria
FROM Productos
INNER JOIN Categorias ON Productos.ID_Categoria = Categorias.ID_Categoria;
Criterio de éxito: Debes ver al menos 5 filas con producto y categoría emparejados.
Comprueba lo aprendido
Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.