Tema 16 · MULTI JOIN & UNION

JOINs Múltiples y el Operador UNION

Aprende a conectar tres o más tablas en una única consulta SQL y combina verticalmente diferentes conjuntos de datos utilizando UNION y UNION ALL.

Encadenamiento de Múltiples JOINs

En bases de datos normalizadas (como arquitecturas de comercio electrónico o plataformas educativas), la información suele estar distribuida en múltiples entidades. Podemos encadenar tantas cláusulas JOIN como relaciones existan en el modelo relacional.

SELECT 
    e.nombre AS estudiante,
    c.titulo AS curso,
    i.nota
FROM inscripciones i
INNER JOIN estudiantes e ON i.estudiante_id = e.id
INNER JOIN cursos c ON i.curso_id = c.id
WHERE i.nota >= 80.0;

Combinación Vertical de Conjuntos: UNION

Mientras que los JOIN combinan datos horizontalmente (añadiendo columnas de otras tablas), el operador UNION combina resultados verticalmente (añadiendo filas de diferentes consultas una debajo de la otra).

  • Regla 1: Cada consulta dentro de UNION debe devolver exactamente el mismo número de columnas.
  • Regla 2: Las columnas correspondientes deben tener tipos de datos compatibles en el mismo orden.
  • Regla 3: Los nombres de columnas finales del resultado se heredan de la primera instrucción SELECT.

Diferencia Crítica entre UNION y UNION ALL

Por defecto, UNION ejecuta internamente una operación de ordenación para eliminar registros duplicados, lo que consume memoria y CPU en conjuntos grandes.

Si sabes de antemano que las filas son únicas, o necesitas conservar duplicados intencionalmente, utiliza UNION ALL. Es significativamente más veloz porque no realiza la deduplicación.

-- Combinar listas de correo institucional y personal
SELECT email, 'Kilopolis' AS origen FROM estudiantes WHERE email LIKE '%@kilopolis.com'
UNION ALL
SELECT email, 'Externo' AS origen FROM estudiantes WHERE email NOT LIKE '%@kilopolis.com';

⚡ Directorio Maestro Unificado con UNION ALL

Genera un catálogo unificado combinando nombres de estudiantes y títulos de cursos en un único listado vertical estructurado:

consulta.sql
Solo lectura
-- Crear un listado de contactos y contenidos con UNION ALL
SELECT 
    nombre AS entidad,
    ciudad AS detalle_ubicacion,
    'Estudiante' AS tipo_registro
FROM estudiantes

UNION ALL

SELECT 
    titulo AS entidad,
    nivel AS detalle_ubicacion,
    'Curso Académico' AS tipo_registro
FROM cursos

ORDER BY tipo_registro ASC, entidad ASC;
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual Completo de SQL & MySQL y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.