Unión interna

Puede utilizar una unión interna en una sentencia SELECT para recuperar únicamente las filas que satisfacen las condiciones de la unión en todas las tablas especificadas.

Puede solicitar una unión interna, ejecutando una sentencia SELECT en la que especifique las tablas a las que desea unir la cláusula FROM y especificar una cláusula WHERE o una cláusula ON para indicar la condición de unión. La condición de unión puede ser cualquier condición de búsqueda simple o compuesta que no contenga ninguna referencia de subconsulta.

En el tipo más simple de unión interna, la condición de unión es columna1=columna2.

Ejemplos

Iniciar información de la interfaz de programación de uso general.
Ejemplo
Puede unir las tablas PARTS y PRODUCTS en la columna PROD# para formar una tabla de partes con sus proveedores y los productos que utilizan las partes. Considere las dos sentencias SELECT siguientes:
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
  FROM PARTS, PRODUCTS
  WHERE PARTS.PROD# = PRODUCTS.PROD#;
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
  FROM PARTS INNER JOIN PRODUCTS
  ON PARTS.PROD# = PRODUCTS.PROD#;

Cualquiera de estas sentencias produce el resultado siguiente:

PART        SUPPLIER         PROD#     PRODUCT
=======     ============     =====     =========
WIRE        ACWF             10        GENERATOR
MAGNETS     BATEMAN          10        GENERATOR
BLADES      ACE_STEEL        205       SAW
PLASTIC     PLASTIK_CORP     30        RELAY
  • Un componente de la tabla PARTS (OIL) tiene un número de producto (160) que no está en la tabla PRODUCTS. Un producto (505, SCREWDRIVER) no tiene componentes listados en la tabla PARTS. OIL y SCREWDRIVER no aparecen en el resultado de la unión.
  • La sintaxis explícita expresa que esta unión es una unión interna. Puede utilizar INNER JOIN en la cláusula FROM en lugar de la coma. ON (más que WHERE) especifica la condición de unión cuando se unen tablas explícitamente en la cláusula FROM.
  • Si no especifica una cláusula WHERE en la primera forma de la consulta, la tabla de resultados contiene todas las combinaciones posibles de filas para las tablas que se identifican en la cláusula FROM. Puede obtener el mismo resultado especificando una condición de unión que sea siempre verdadera en la segunda forma de la consulta.

    Considere esta consulta:

    SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
      FROM PARTS INNER JOIN PRODUCTS
      ON 1=1;

    El número de filas de la tabla de resultados es el producto del número de filas de cada tabla:

    PART        SUPPLIER         PROD#     PRODUCT
    =======     ============     =====     ===========
    WIRE        ACWF             10        SCREWDRIVER
    WIRE        ACWF             10        RELAY
    WIRE        ACWF             10        SAW
    WIRE        ACWF             10        GENERATOR
    OIL         WESTERN_CHEM     160       SCREWDRIVER
    OIL         WESTERN_CHEM     160       RELAY
    OIL         WESTERN_CHEM     160       SAW
    OIL         WESTERN_CHEM     160       GENERATOR
    ⋮
Ejemplo
Puede especificar condiciones de unión más complicadas para obtener diferentes conjuntos de resultados. Para eliminar los proveedores que empiezan por la letra A de la tabla de componentes, proveedores, números de producto y productos, escriba una consulta como la del ejemplo siguiente:
SELECT PART, SUPPLIER, PARTS.PROD#, PRODUCT
  FROM PARTS INNER JOIN PRODUCTS
    ON PARTS.PROD# = PRODUCTS.PROD#
    AND SUPPLIER NOT LIKE 'A%';

El resultado de la consulta es todas las filas que no tienen un proveedor que empieza con la letra A:

PART        SUPPLIER       PROD#     PRODUCT
=======     ============   =====     =========
MAGNETS     BATEMAN        10        GENERATOR
PLASTIC     PLASTIK_CORP   30        RELAY
Ejemplo
En este ejemplo se une la tabla PROJ a sí misma utilizando una unión interna. La consulta devuelve el número y nombre de cada proyecto principal, seguido del número y nombre del proyecto que forma parte del mismo:
SELECT A.PROJNO AS "MAJOR PROJ",       
       A.PROJNAME AS "MAJOR PROJ NAME",
       B.PROJNO AS "PROJ #",           
       B.PROJNAME AS "PROJ NAME"       
  FROM PROJ A, PROJ B                  
  WHERE A.PROJNO=B.MAJPROJ;

En este ejemplo, A indica la primera instancia de la tabla PROJ y B indica una segunda instancia de esta tabla. La condición de unión es una condición en la que el valor de la columna PROJNO de la tabla PROJ A debe ser igual al valor de la columna MAJPROJ de la tabla PROJ B.

La tabla de resultados es similar al ejemplo siguiente:

MAJOR PROJ  MAJOR PROJ NAME        PROJ #     PROJ NAME
==========  ===============        ======     ====================
AD3100      ADMIN SERVICES         AD3110     GENERAL AD SYSTEMS  
AD3110      GENERAL AD SYSTEMS     AD3111     PAYROLL PROGRAMMING 
AD3110      GENERAL AD SYSTEMS     AD3112     PERSONNEL PROGRAMMG 
AD3110      GENERAL AD SYSTEMS     AD3113     ACCOUNT.PROGRAMMING 
MA2100      WELD LINE AUTOMATION   MA2110     W L PROGRAMMING     
MA2110      W L PROGRAMMING        MA2111     W L PROGRAM DESIGN  
MA2110      W L PROGRAMMING        MA2112     W L ROBOT DESIGN    
MA2110      W L PROGRAMMING        MA2113     W L PROD CONT PROGS 
OP1000      OPERATION SUPPORT      OP1010     OPERATION           
OP2000      GEN SYSTEMS SERVICES   OP2010     SYSTEMS SUPPORT     
OP2010      SYSTEMS SUPPORT        OP2011     SCP SYSTEMS SUPPORT 
OP2010      SYSTEMS SUPPORT        OP2012     APPLICATIONS SUPPORT
OP2010      SYSTEMS SUPPORT        OP2013     DB/DC SUPPORT       
MA2100      WELD LINE AUTOMATION   PL2100     WELD LINE PLANNING 

En este ejemplo, la coma en la cláusula FROM especifica implícitamente una unión interna y actúa del mismo modo que si se hubieran utilizado las palabras clave INNER JOIN. Cuando utiliza la coma para una unión interna, debe especificar la condición de unión en la cláusula WHERE. Cuando utiliza las palabras clave INNER JOIN, debe especificar la condición de unión en la cláusula ON.

Finalizar información de la interfaz de programación de uso general.