SQL FULL JOIN: Unión Completa En SQL server

En SQL server, el comando SQL FULL JOIN (o FULL OUTER JOIN) se utiliza para unir entre 2 tablas. El uso de este comando le permite combinar los resultados de las 2 tablas, asociarlas entre sí con una condición y rellenarlas con valores NULL si no se cumple la condición.

sql full join

La combinación externa completa (también conocida como SQL Full Join) primero agrega todas las filas que coinciden con la condición indicada en la consulta y luego agrega las filas restantes no coincidentes de ambas tablas. Necesitamos dos o más tablas para la unión.

Para cada fila de la tabla Tabla1, la combinación externa completa la compara con cada fila de la tabla Tabla2.

Si las filas de ambas tablas cumplen con join_condición, la combinación externa completa incluye columnas de ambas filas en el conjunto de resultados. Decimos que la fila en la tabla Tabla1 coincide con la fila en la tabla Tabla2 en este caso.

Si una fila de la tabla Tabla1 no tiene ninguna fila coincidente de la tabla Tabla2, la combinación externa completa incluirá columnas de la tabla Tabla1 con valores nulos para todas las columnas de la tabla Tabla2.

De manera similar, si una fila en la tabla Tabla2 no tiene una fila que tanga una valor igual en la tabla Tabla1, la unión externa completa incluirá columnas de la tabla Tabla2 con los valores nulos para las columnas de la tabla Tabla1.

Tenga en cuenta que la palabra clave OUTER es opcional, por lo que, FULL OUTER JOIN FULL JOIN son lo mismo.

Sintaxis SQL FULL JOIN

Para devolver los registros table1 y table2, debe utilizar una consulta SQL FULL JOIN con sintaxis como la siguiente:

SELECT *
FROM nombre_table1
FULL JOIN nombre_table2 ON nombre_table1.id = nombre_table2.fk_id

Esta consulta también se puede diseñar de la siguiente manera:

SELECT *
FROM nombre_table1
FULL OUTER JOIN nombre_table2 ON nombre_table1.id = nombre_table2.fk_id

La condición presentada aquí es vincular las tablas en un identificador, pero la condición se puede establecer en otros campos.

Ejemplo SQL FULL JOIN

Por ejemplo, considere una base de datos que contiene una tabla de usuario, así como una tabla de pedidos que contiene todas las ventas.

Tabla de usuarios:

id_usuario nombre apellido correo electrónico ciudad activo
1 Querido Marechal marechal@example.com París 1
2 Esmée Luz lefort@example.com Lyon 0
3 Marina Paul prevost@example.com Lille 1
4 Luc Rolland lucrolland@example.com Marsella 1

 

Comando Tabla pedido:

id_pedido fecha num_fact prec_total
1 2013-01-23 A00103 203.14
1 2013-02-14 A00104 124.00
2 2013-02-17 A00105 149.45
3 2013-02-21 A00106 235.35
5 2013-03-02 A00107 47.58

Es posible utilizar en SQL FULL JOIN para enumerar todos los usuarios que han realizado o no una venta, y para enumerar todas las ventas que están asociadas o no con un usuario. La consulta SQL es la siguiente:

SELECT id, nombre, apellido, id_pedido, fecha, num_fact
FROM pedido
FULL JOIN pedido ON usuario.id = pedido.id_usuario

Resultado:

id_usuario nombre apellido id_pedido fecha num_facture
1 Querido Marechal 1 2013-01-23 A00103
1 Querido Marechal 1 2013-02-14 A00104
2 Esmée Luz 2 2013-02-17 A00105
3 Marina Paul 3 2013-02-21 A00106
4 Luc Rolland NULO NULO NULO
NULO NULO NULO 5 2013-03-02 A00107

Este resultado muestra el usuario número 4 que no ha realizado ninguna compra. El resultado también devuelve la factura A00107 que está asociada a un usuario que no existe (o ya no existe). En los casos en que no hay coincidencia con la otra tabla, los valores de las columnas son NULL.

Conclusión

Un FULL JOIN en SQL (también conocido como FULL OUTER JOIN) combina los resultados de un LEFT JOIN y un RIGHT JOIN, retornando todas las filas de ambas tablas y emparejando las filas correspondientes entre ellas. Algunos puntos importantes sobre el uso de FULL JOIN en SQL son:

  • Resultados con valores nulos: Como se mencionó anteriormente, si una tabla no tiene una fila coincidente en la otra tabla, las columnas correspondientes en el resultado se llenarán con valores nulos. Es importante tener en cuenta esto al trabajar con los resultados de la consulta.
  • Potencial de tablas grandes: SQL FULL JOIN se puede utilizar para unir grandes tablas, pero debe tenerse en cuenta que esto puede ser ineficiente en términos de rendimiento. Es importante optimizar la consulta y asegurarse de que se estén utilizando índices apropiados para mejorar el rendimiento de la consulta.
  • Combinación con otras cláusulas: con SQL FULL JOIN se puede combinar con otras cláusulas, como WHERE y GROUP BY, para filtrar y agrupar los resultados según sea necesario.
  • Espero que esto te haya dado una idea de los puntos importantes a tener en cuenta al utilizar FULL JOIN en SQL.

Deja un comentario