Introducción

En SQL, un FULL OUTER JOIN es una operación que combina los resultados de un LEFT JOIN y un RIGHT JOIN. Esto significa que devuelve todas las filas cuando hay una coincidencia en una de las tablas, y también las filas que no tienen coincidencia en ambas tablas. Si no hay coincidencia, los resultados contendrán NULL en las columnas de la tabla que no tiene coincidencia.

Sintaxis

La sintaxis básica para un FULL OUTER JOIN es la siguiente:

SELECT column1, column2, ...
FROM table1
FULL OUTER JOIN table2
ON table1.common_column = table2.common_column;

Ejemplo Práctico

Supongamos que tenemos dos tablas, employees y departments, con los siguientes datos:

Tabla employees

employee_id name department_id
1 Alice 10
2 Bob 20
3 Charlie 30
4 David NULL

Tabla departments

department_id department_name
10 HR
20 IT
40 Marketing

Queremos obtener una lista de todos los empleados y departamentos, incluyendo aquellos empleados que no están asignados a ningún departamento y aquellos departamentos que no tienen empleados.

Consulta SQL

SELECT employees.employee_id, employees.name, departments.department_name
FROM employees
FULL OUTER JOIN departments
ON employees.department_id = departments.department_id;

Resultado

employee_id name department_name
1 Alice HR
2 Bob IT
3 Charlie NULL
4 David NULL
NULL NULL Marketing

Explicación del Resultado

  • Alice y Bob tienen coincidencias en ambas tablas, por lo que se muestran con sus respectivos departamentos.
  • Charlie y David no tienen coincidencias en la tabla departments, por lo que sus columnas de department_name son NULL.
  • El departamento de Marketing no tiene coincidencias en la tabla employees, por lo que sus columnas de employee_id y name son NULL.

Ejercicio Práctico

Ejercicio

Dadas las siguientes tablas students y courses, escribe una consulta que utilice FULL OUTER JOIN para listar todos los estudiantes y cursos, incluyendo aquellos estudiantes que no están inscritos en ningún curso y aquellos cursos que no tienen estudiantes inscritos.

Tabla students

student_id student_name
1 John
2 Jane
3 Mike

Tabla courses

course_id course_name
101 Math
102 Science
103 History

Solución

SELECT students.student_id, students.student_name, courses.course_name
FROM students
FULL OUTER JOIN courses
ON students.student_id = courses.course_id;

Resultado Esperado

student_id student_name course_name
1 John NULL
2 Jane NULL
3 Mike NULL
NULL NULL Math
NULL NULL Science
NULL NULL History

Conclusión

El FULL OUTER JOIN es una herramienta poderosa para combinar datos de dos tablas, asegurando que se incluyan todas las filas de ambas tablas, independientemente de si hay coincidencias. Esto es especialmente útil en situaciones donde necesitas un conjunto de datos completo, incluso si algunas relaciones no existen. Asegúrate de practicar con diferentes conjuntos de datos para familiarizarte con cómo funciona y cómo puede ser útil en tus consultas SQL.

Curso de SQL

Módulo 1: Introducción a SQL

Módulo 2: Consultas básicas de SQL

Módulo 3: Trabajando con múltiples tablas

Módulo 4: Filtrado avanzado de datos

Módulo 5: Manipulación de datos

Módulo 6: Funciones avanzadas de SQL

Módulo 7: Subconsultas y consultas anidadas

Módulo 8: Índices y optimización de rendimiento

Módulo 9: Transacciones y concurrencia

Módulo 10: Temas avanzados

Módulo 11: SQL en la práctica

Módulo 12: Proyecto final

© Copyright 2024. Todos los derechos reservados