Skip to content

FULL OUTER JOIN, un tipo de JOIN no tan conocido

26/02/2014
SQLServerLogo

La combinación de tablas mediante la operación de JOIN es algo que utilizamos en forma continua en nuestras consultas SQL. Mecanismo principal para obtener la información en el estado natural (que no es normalizada), presenta variantes de acuerdo al resultado esperado, como es el INNER JOIN o join natural y el OUTER JOIN, en sus versiones de LEFT OUTER JOIN y RIGHT OUTER JOIN. Pero además de estas alternativas, tenemos también la posibilidad de utilizar el FULL OUTER JOIN, que combina de alguna manera el resultado obtenido por un LEFT JOIN y un RIGHT JOIN aplicados simultáneamente.

Pongamos un ejemplo funcional para entender el funcionamiento del FULL JOIN. Supongamos una tabla con información de clientes y otra tabla con datos de ventas realizadas. Supongamos además que es opcional que una venta tenga un cliente relacionado en la mencionada tabla de clientes. Si utilizamos un LEFT JOIN (clientes LEFT JOIN ventas) obtendremos todos los clientes con sus ventas asociadas, y además los clientes que no tuvieron ventas. Si ejecutamos un RIGHT JOIN  (clientes RIGHT JOIN ventas) obtendremos todas las ventas y solo los clientes con ventas registradas. Pero si lo que necesitamos es la información de todos los clientes, hayan tenido o no ventas registradas y de todas las ventas, tengan o no un cliente asociado, debemos entonces recurrir a un tipo distinto de JOIN, justamente el FULL JOIN.

Finamente recuerden, para aquellos que aún estén en proceso de migración desde servidores o bases de datos compatibles con SQL Server 2000, que no están permitidos en los niveles de compatibilidad desde SQL Server 2005 en adelante estos operadores para implementar un JOIN dentro de la cláusula WHERE de una consulta:

*= para el que se debe usar el LFT JOIN
=* para el que se debe usar el RIGHT JOIN
*=* para el que se debe usar el FULL JOIN

La documentación de esta forma de utilización de la sentencia JOIN la pueden encontrar en estos links:

FROM (Transact-SQL)

Using Outer Joins

Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: