Puedes ejecutar cualquier JOIN en nuestra consola interactiva: Abrir consola SQL →
FULL JOIN en SQL: combina todas las filas de ambas tablas
FULL JOIN devuelve todas las filas de ambas tablas, coincidan o no. Es ideal para reportes completos, análisis de datos faltantes y comparaciones entre tablas.
Tabla de contenidos
1. ¿Qué es FULL JOIN?
FULL JOIN devuelve todas las filas de ambas tablas: - Coincidencias - Filas solo de la izquierda - Filas solo de la derecha Las filas sin coincidencia muestran valores NULL en la tabla opuesta.
SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p ON u.id = p.usuario_id;
2. Sintaxis de FULL JOIN
SELECT columnas
FROM tabla1
FULL JOIN tabla2
ON tabla1.columna = tabla2.columna;
3. Ejemplo básico
SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p
ON u.id = p.usuario_id;
4. Detectar filas sin coincidencias
FULL JOIN permite detectar datos faltantes en ambas tablas.
SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p
ON u.id = p.usuario_id
WHERE u.id IS NULL OR p.id IS NULL;
-- Filas sin coincidencias
5. FULL JOIN con múltiples tablas
SELECT u.nombre, p.producto, c.ciudad
FROM usuarios u
FULL JOIN pedidos p ON u.id = p.usuario_id
FULL JOIN ciudades c ON u.ciudad_id = c.id;
6. FULL JOIN con condiciones adicionales
SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p
ON u.id = p.usuario_id
AND p.estado = 'Enviado';
7. Ejemplos prácticos
SELECT e.nombre, d.nombre AS departamento
FROM empleados e
FULL JOIN departamentos d ON e.depto_id = d.id;
SELECT p.producto, c.nombre AS categoria
FROM productos p
FULL JOIN categorias c ON p.categoria_id = c.id;
SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p ON u.id = p.usuario_id
WHERE u.nombre IS NULL OR p.producto IS NULL;
8. Ejercicios para practicar
- Haz un FULL JOIN entre usuarios y pedidos.
- Obtén filas sin coincidencias.
- Haz un FULL JOIN entre productos y categorías.
- Haz un FULL JOIN múltiple entre usuarios, pedidos y ciudades.
- Explica para qué sirve FULL JOIN.
SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p ON u.id = p.usuario_id;
SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p ON u.id = p.usuario_id
WHERE u.id IS NULL OR p.id IS NULL;
SELECT p.nombre, c.nombre
FROM productos p
FULL JOIN categorias c ON p.categoria_id = c.id;
SELECT u.nombre, p.producto, c.ciudad
FROM usuarios u
FULL JOIN pedidos p ON u.id = p.usuario_id
FULL JOIN ciudades c ON u.ciudad_id = c.id;
-- FULL JOIN sirve para combinar todas las filas de ambas tablas.
9. Mini‑proyecto: Reporte completo de usuarios y pedidos
SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p ON u.id = p.usuario_id;
10. Errores comunes
- Confundir FULL JOIN con CROSS JOIN.
- No usar IS NULL para detectar filas sin coincidencias.
- Unir columnas incorrectas.
- Olvidar alias en consultas largas.
11. Preguntas frecuentes
¿FULL JOIN es común?
Menos que INNER o LEFT, pero muy útil para reportes completos.
¿Puedo unir más de dos tablas?
Sí, puedes unir tantas como necesites.