Peticiones distribuidas para consultar fuentes de datos - ejemplos

Los ejemplos de este tema ilustran peticiones distribuidas con una subconsulta, operadores set y una operación join.

En los siguientes ejemplos, el servidor federado está configurado para acceder a una fuente de datos Db2 for z/OS fuente de datos, una fuente de datos Db2 para IBM i y una fuente de datos Oracle. En cada origen de datos hay almacenada una tabla que contiene información de empleado. El servidor federado hace referencia a estas tablas mediante apodos que apuntan al lugar en el que residen las tablas.
zOS_EMPLOYEES
Apodo para una tabla en un origen de datos Db2 for z/OS que contiene información de empleado.
SYSTEMi_EMPLOYEES
Apodo para una tabla en un origen de datos Db2 para IBM i que contiene información de empleado.
ORA_EMPLOYEES
Apodo para una tabla de un origen de datos Oracle que contenga información de empleado.
ORA_REGIONS
Apodo para una tabla de un origen de datos Oracle que contenga información sobre las regiones en las que viven los empleados.
Los ejemplos siguientes ilustran los tres convenios de SQL utilizados con peticiones distribuidas, que utilizan los apodos definidos para cada una de las tablas.

Ejemplo: Petición distribuida con una subconsulta

SYSTEMi_EMPLOYEES contiene los números de teléfono de los empleados que viven en Asia. También contiene los códigos de región asociados con dichos números de teléfono, pero no lista las regiones que representan los códigos. ORA_REGIONS lista ambos códigos y regiones. La consulta siguiente utiliza una subconsulta para buscar el código de región para China. A continuación utiliza el código de región para devolver una lista de dichos empleados de SYSTEMi_EMPLOYEES que tengan un número de teléfono en China.
SELECT name, telephone FROM db2admin.SYSTEMi_employees
   WHERE region_code IN
   (SELECT region_code FROM dbadmin.ora_regions
   WHERE region_name = 'CHINA') 

Ejemplo: Petición distribuida con operadores de conjunto

El servidor federado da soporte a tres operadores de conjunto: UNION, EXCEPT y INTERSECT.
  • Utilice el operador de conjunto UNION para combinar las filas que satisfagan dos o más sentencias SELECT.
  • Utilice el operador de conjunto EXCEPT para recuperar las filas que satisfagan la primera sentencia SELECT pero no la segunda.
  • Utilice el operador de conjunto INTERSECT para recuperar las filas que satisfagan ambas sentencias SELECT.

Los tres operadores de conjunto pueden utilizar el operando ALL para indicar que no han de duplicarse filas del resultado. Lo cual elimina la necesidad de una clasificación adicional.

La consulta siguiente recupera todos los nombres de empleado y códigos de región presentes tanto en SYSTEMi_EMPLOYEES como en zOS_EMPLOYEES, aún en el caso de que cada una de las tablas resida en un origen de datos diferente.
SELECT name, region_code
   FROM as400_employees
INTERSECT
SELECT name, region_code
   FROM zOS_employees 

Ejemplo: Petición distribuida para una unión

Una unión relacional produce un conjunto de resultados que contiene una combinación de columnas recuperadas de dos o más tablas. Deberían especificarse condiciones para limitar el tamaño de las filas en el conjunto de resultados.

La consulta que hay a continuación combina nombres de empleados y sus nombres de región correspondientes comparando los códigos de región listados en dos tablas. Cada una de las tablas reside en un origen de datos diferente.
SELECT t1.name, t2.region_name
   FROM dbadmin.SYSTEMi_employees t1, dbadmin.ora_regions t2
   WHERE t1.region_code = t2.region_code