Puedes ejecutar cualquier JOIN en nuestra consola interactiva: Abrir consola SQL →
JOINS en SQL: combina datos de varias tablas
Los JOINS permiten combinar datos de dos o más tablas usando columnas relacionadas. Son esenciales para trabajar con bases de datos relacionales y obtener información completa.
Tabla de contenidos
1. ¿Qué es un JOIN?
Un JOIN combina filas de dos tablas usando una columna en común. Ejemplo típico: unir usuarios con sus pedidos.
SELECT usuarios.nombre, pedidos.producto
FROM usuarios
JOIN pedidos ON usuarios.id = pedidos.usuario_id;
2. INNER JOIN
Devuelve solo las filas que coinciden en ambas tablas.
SELECT u.nombre, p.producto
FROM usuarios u
INNER JOIN pedidos p ON u.id = p.usuario_id;
3. LEFT JOIN
Devuelve todas las filas de la tabla izquierda, aunque no haya coincidencia.
SELECT u.nombre, p.producto
FROM usuarios u
LEFT JOIN pedidos p ON u.id = p.usuario_id;
4. RIGHT JOIN
Devuelve todas las filas de la tabla derecha, aunque no haya coincidencia.
SELECT u.nombre, p.producto
FROM usuarios u
RIGHT JOIN pedidos p ON u.id = p.usuario_id;
5. FULL JOIN
Devuelve todas las filas cuando hay coincidencia en cualquiera de las tablas.
SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p ON u.id = p.usuario_id;
6. JOINS múltiples
SELECT u.nombre, p.producto, c.ciudad
FROM usuarios u
JOIN pedidos p ON u.id = p.usuario_id
JOIN ciudades c ON u.ciudad_id = c.id;
7. Ejemplos prácticos
SELECT * FROM usuarios u
INNER JOIN pedidos p ON u.id = p.usuario_id;
SELECT * FROM usuarios u
LEFT JOIN pedidos p ON u.id = p.usuario_id;
SELECT * FROM productos p
JOIN categorias c ON p.categoria_id = c.id;
8. Ejercicios para practicar
- Haz un INNER JOIN entre usuarios y pedidos.
- Haz un LEFT JOIN entre usuarios y pedidos.
- Haz un JOIN entre productos y categorías.
- Haz un JOIN múltiple entre usuarios, pedidos y ciudades.
- Explica la diferencia entre INNER y LEFT JOIN.
SELECT u.nombre, p.producto
FROM usuarios u
INNER JOIN pedidos p ON u.id = p.usuario_id;
SELECT u.nombre, p.producto
FROM usuarios u
LEFT JOIN pedidos p ON u.id = p.usuario_id;
SELECT p.nombre, c.nombre
FROM productos p
JOIN categorias c ON p.categoria_id = c.id;
SELECT u.nombre, p.producto, c.ciudad
FROM usuarios u
JOIN pedidos p ON u.id = p.usuario_id
JOIN ciudades c ON u.ciudad_id = c.id;
-- INNER JOIN devuelve solo coincidencias.
-- LEFT JOIN devuelve todas las filas de la izquierda aunque no coincidan.
9. Mini‑proyecto: Sistema de pedidos
CREATE TABLE usuarios (
id INT PRIMARY KEY,
nombre VARCHAR(50)
);
CREATE TABLE pedidos (
id INT PRIMARY KEY,
usuario_id INT,
producto VARCHAR(50)
);
INSERT INTO usuarios VALUES (1, 'Ana'), (2, 'Luis');
INSERT INTO pedidos VALUES (1, 1, 'Teclado'), (2, 1, 'Ratón'), (3, 2, 'Monitor');
SELECT u.nombre, p.producto
FROM usuarios u
JOIN pedidos p ON u.id = p.usuario_id;
10. Errores comunes
- No usar alias y crear consultas difíciles de leer.
- Confundir columnas relacionadas.
- Usar JOIN sin condición ON.
- Duplicar filas por relaciones incorrectas.
11. Preguntas frecuentes
¿INNER JOIN es el más usado?
Sí, es el JOIN más común en SQL.
¿Puedo unir más de dos tablas?
Sí, puedes unir tantas como necesites.