Tema 15 · LEFT & RIGHT JOIN

Uniones Externas (LEFT JOIN y RIGHT JOIN)

Domina el funcionamiento de las uniones externas (LEFT JOIN y RIGHT JOIN) para conservar filas sin correspondencia y detectar registros huérfanos con valores NULL.

¿Qué es un LEFT JOIN (Left Outer Join)?

A diferencia de INNER JOIN que descarta cualquier fila que no tenga coincidencia en ambas tablas, LEFT JOIN devuelve todas las filas de la tabla izquierda (la tabla especificada en la cláusula FROM), junto con las columnas coincidentes de la tabla derecha.

Si un registro de la tabla izquierda no encuentra ninguna pareja en la tabla derecha, las columnas de la tabla derecha se rellenarán automáticamente con valores NULL:

SELECT 
    estudiantes.nombre,
    inscripciones.curso_id,
    inscripciones.nota
FROM estudiantes
LEFT JOIN inscripciones ON estudiantes.id = inscripciones.estudiante_id;
Diagrama Técnico: LEFT JOIN, RIGHT JOIN y Anti-Join para detección de huérfanos

Diagrama 15.1: Comportamiento de LEFT JOIN, preservación de registros nulos y técnica Anti-Join con IS NULL.

¿Cuándo usar RIGHT JOIN?

La cláusula RIGHT JOIN hace exactamente lo contrario: devuelve todas las filas de la tabla derecha y las coincidencias de la izquierda. Si no hay correspondencia, las columnas de la izquierda serán NULL.

💡 Regla de Estilo Profesional

En proyectos reales y bases de datos empresariales, se desaconseja mezclar LEFT JOIN y RIGHT JOIN en una misma consulta. Los desarrolladores prefieren reordenar las tablas y utilizar exclusivamente LEFT JOIN para mantener un flujo de lectura consistente de izquierda a derecha.

Técnica Anti-Join: Encontrar Registros Huérfanos

Una de las aplicaciones más potentes de LEFT JOIN es identificar registros en una tabla que no tienen ninguna relación en otra tabla, combinándolo con la condición WHERE tabla_derecha.id IS NULL:

-- Encuentra estudiantes que nunca se han matriculado en ningún curso
SELECT 
    e.nombre,
    e.email
FROM estudiantes e
LEFT JOIN inscripciones i ON e.id = i.estudiante_id
WHERE i.id IS NULL;

⚡ Auditoría de Inscripciones con LEFT JOIN

Consulta todos los estudiantes registrados y muestra sus cursos inscritos. Observa cómo Andrés Gómez aparece con valores NULL por no tener inscripciones activas:

consulta.sql
Solo lectura
-- Listar todos los estudiantes, tengan o no inscripciones activas
SELECT 
    e.id AS id_estudiante,
    e.nombre AS estudiante,
    e.ciudad,
    i.id AS id_inscripcion,
    i.curso_id,
    COALESCE(i.nota, 0.0) AS calificacion_o_cero
FROM estudiantes e
LEFT JOIN inscripciones i ON e.id = i.estudiante_id
ORDER BY e.id 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.