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.
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