Unión externa completa

Una unión externa completa es un método para combinar tablas de modo que el resultado incluya filas no coincidentes de ambas tablas.

Si se une a dos tablas y desea que el conjunto de resultados incluya filas no coincidentes de ambas tablas, utilice una cláusula FULL OUTER JOIN. El cotejo se basa en la condición de unión. Si alguna columna de la tabla de resultados no tiene un valor, esa columna tiene el valor nulo en la tabla de resultados.

La condición de unión para una unión externa completa debe ser una condición de búsqueda simple que compare dos columnas o una invocación de una función de conversión que tenga un nombre de columna como argumento.

Ejemplos de uniones exteriores completas

Para este ejemplo, supongamos que las tablas PARTES y PRODUCTOS contienen las siguientes filas:

          PARTS table                             PRODUCTS table
PART      PROD#   SUPPLIER              PROD#     PRODUCT        PRICE
=======   =====   ============          =====     ===========    =====
WIRE      10      ACWF                  505       SCREWDRIVER    3.70
OIL       160     WESTERN_CHEM          30        RELAY          7.55
MAGNETS   10      BATEMAN               205       SAW            18.90
PLASTIC   30      PLASTIK_CORP          10        GENERATOR      45.75
BLADES    205     ACE_STEEL

La siguiente consulta realiza una unión externa completa de las tablas PARTES y PRODUCTOS:

SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
  FROM PARTS FULL OUTER JOIN PRODUCTS
    ON PARTS.PROD# = PRODUCTS.PROD#;

La tabla de resultados de la consulta tiene un aspecto similar al siguiente:

PART        SUPPLIER       PROD#     PRODUCT
=======     ============   =====     ==========
WIRE        ACWF           10        GENERATOR
MAGNETS     BATEMAN        10        GENERATOR
PLASTIC     PLASTIK_CORP   30        RELAY
BLADES      ACE_STEEL      205       SAW
OIL         WESTERN_CHEM   160       -----------
-------     ------------   ---       SCREWDRIVER

Ejemplo de unión externa completa utilizando COALESCE o VALUE

COALESCE es la palabra clave que especifica el estándar SQL como sinónimo de la función VALUE. Esta función, con cualquiera de los dos nombres, puede ser especialmente útil en operaciones de unión externa completa porque devuelve el primer valor no nulo del par de columnas de unión.

El número de producto en el resultado del ejemplo para la unión externa completa es nulo para SCREWDRIVER, aunque la tabla PRODUCTS contiene un número de producto para SCREWDRIVER. Si por el contrario selecciona PRODUCTS.PROD#, PROD# es nulo para OIL. Si selecciona tanto PRODUCTS.PROD # como PARTS.PROD #, el resultado contiene dos columnas, ambas con algunos valores nulos. Puede fusionar datos de ambas columnas en una única columna, eliminando los valores nulos, mediante la función COALESCE.

Con las mismas tablas de PARTES y PRODUCTOS, el siguiente ejemplo combina los datos no nulos de las columnas PROD#:
SELECT PART, SUPPLIER,
   COALESCE(PARTS.PROD#, PRODUCTS.PROD#) AS PRODNUM, PRODUCT
    FROM PARTS FULL OUTER JOIN PRODUCTS
       ON PARTS.PROD# = PRODUCTS.PROD#;
La tabla de resultados tiene un aspecto similar al siguiente:
PART        SUPPLIER       PRODNUM   PRODUCT
=======     ============   =======   ===========
WIRE        ACWF           10        GENERATOR
MAGNETS     BATEMAN        10        GENERATOR
PLASTIC     PLASTIK_CORP   30        RELAY
BLADES      ACE_STEEL      205       SAW
OIL         WESTERN_CHEM   160       -----------
-------     ------------   505       SCREWDRIVER

La cláusula AS (AS PRODNUM) proporciona un nombre para el resultado de la función COALESCE.