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
UNIONdebe 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:
-- 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;
¿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.