IOKELU
Nivel: Intermedio
💡 Prueba las consultas:
Puedes ejecutar cualquier JOIN avanzado en nuestra consola interactiva: Abrir consola SQL →

JOINS avanzados en SQL: domina combinaciones complejas de tablas

Los JOINS avanzados permiten resolver problemas complejos combinando múltiples tablas, aplicando condiciones adicionales y creando relaciones más precisas. Esta guía profundiza en INNER, LEFT, RIGHT, FULL y CROSS JOIN con ejemplos reales.

1. Repaso rápido de JOINS

Antes de profundizar, recordemos los tipos principales:

2. INNER JOIN avanzado


SELECT u.nombre, p.producto, p.fecha
FROM usuarios u
INNER JOIN pedidos p 
    ON u.id = p.usuario_id
WHERE p.fecha >= '2024-01-01';
    

3. LEFT JOIN avanzado


SELECT u.nombre, p.producto
FROM usuarios u
LEFT JOIN pedidos p 
    ON u.id = p.usuario_id
WHERE p.id IS NULL;
-- Usuarios sin pedidos
    

SELECT u.nombre, p.producto
FROM usuarios u
RIGHT JOIN pedidos p 
    ON u.id = p.usuario_id;
    

5. FULL JOIN


SELECT u.nombre, p.producto
FROM usuarios u
FULL JOIN pedidos p 
    ON u.id = p.usuario_id;
    

6. CROSS JOIN


SELECT u.nombre, p.producto
FROM usuarios u
CROSS JOIN productos p;
-- Todas las combinaciones posibles
    

7. 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;
    

8. JOINS con condiciones adicionales


SELECT u.nombre, p.producto
FROM usuarios u
JOIN pedidos p 
    ON u.id = p.usuario_id
    AND p.estado = 'Enviado';
    

9. Ejemplos prácticos


SELECT e.nombre, d.nombre AS departamento
FROM empleados e
LEFT JOIN departamentos d ON e.depto_id = d.id;

SELECT p.producto, c.nombre AS categoria
FROM productos p
JOIN categorias c ON p.categoria_id = c.id;

SELECT u.nombre, p.producto, p.estado
FROM usuarios u
JOIN pedidos p ON u.id = p.usuario_id
WHERE p.estado = 'Pendiente';
    

10. Ejercicios para practicar

11. Mini‑proyecto: Reporte completo de pedidos


SELECT u.nombre, p.producto, p.estado, c.ciudad
FROM usuarios u
JOIN pedidos p ON u.id = p.usuario_id
JOIN ciudades c ON u.ciudad_id = c.id
WHERE p.estado = 'Enviado';
    

12. Errores comunes

13. Preguntas frecuentes

¿Cuál es el JOIN más usado?

INNER JOIN es el más común.

¿Puedo unir más de tres tablas?

Sí, no hay límite práctico.


Siguiente guía

SQL Intermedio – INNER JOIN →