Ir al contenido principal

Entradas

Mostrando entradas de septiembre 26, 2013

Dos Minutos

·          UNION ALL concatena el resultado de dos consultas. ·          UNION ordena el resultado de dos consulta y remueve duplicados. ·          INTERSECT devuelve las filas que son comunes en dos consultas. ·          MINUS devuelve las filas de la primera consulta que no existen en la segunda consulta. ·          Las consultas en una consulta compuesta deben de devolver el mismo número de columnas. ·          Las columnas deben de ser compatibles con el tipo de dato. ·          Los operadores de conjunto tiene el mismo nivel de precedencia. ·          No es posible especificar la clausula ORDER BY en las consultas individuales que participan en una consulta compuesta. ·          La Clausula ORDER BY debe ser agregada al final de la consulta compuesta. ·          Las filas devueltas por un UNION ALL están ordenadas de acuerdo a la naturaleza de cada consulta. ·          Las filas devueltas por un UNION sor ordenadas a través de todas las columnas de izquierda

Resumen

Los Operadores de Conjuntos combinan el resultado de dos o más consultas en un solo resultado. Una consulta que utiliza un Operador de Conjunto es una Consulta Compuesta. Los Operadores de Conjuntos son UNION, UNION ALL, INTERSECT y MINUS, estos tienen la misma precedencia. Y si más de uno es incluido en una consulta compuesta serán ejecutados en el orden en el que aparecen, la precedencia puede ser controlado mediante paréntesis. Todos los operadores de conjunto excepto el UNION ALL ordenan el resultado y eliminan los duplicados. Las consulta en una consulta compuesta deben tener el mismo número de columnas. Las columnas correspondientes de cada consulta deben ser compatibles con el tipo de dato. Las consultas pueden utilizar todas las características  de la sentencia SELECT excepto la clausula ORDER BY. Sin embargo es posible agregar una clausula ORDER BY al final de la consulta compuesta.

Controlando el Orden de las Filas devueltas

Por defecto, la salida de una Consulta Compuesta con el operador UNION ALL no son ordenados en absoluto. Las filas serán devueltas en grupos en el orden en el cual las consultas fueron listadas, primero se desplegaran las filas de la primera consulta de arriba abajo, segundo se listaran las filas de la segunda consulta y las filas serán desplegadas en el orden que fueron almacenadas. La salida de cualquier otro Operador de Conjuntos serán ordenados de forma ascendente en todas las columnas, iniciando de la primera columna. No es posible sintácticamente utilizar la clausula ORDER BY en las consultas individuales que conforman una consulta compuesta. Esto es porque la ejecución de una Consulta Compuesta incluye un Ordenamiento, que provocaría un conflicto con las clausula ORDER BY individuales. Podría parecer que teóricamente  es posible que un UNION ALL  pueda tomar un ORDER BY por cada consulta. Pero la Implementación de Oracle de UNION ALL no lo permite. Esto no es un problem

Casos Especiales.

Si dos consultas no devuelven el mismo número de columnas, puede ser posible crear una Consulta Compuesta con estas dos consultas generando columnas adicionales con valores Null. El uso de TO_CHAR(NULL) genera valores que hagan falta. Una consulta compuesta puede consistir de más de dos consultas, como podemos controlar la precedencia de los operadores si todos están al mismo nivel, esto es posible mediante el uso de paréntesis. Sin el uso de paréntesis los operadores serán aplicados secuencialmente en el orden en cual fueron especificados. Los paréntesis pueden controlar la precedencia explícitamente. SELECT employee_id, first_name, NULL LAST_NAME FROM   employees WHERE  employee_id IN (101,102,103,104,105) UNION SELECT employee_id, NULL FIRST_NAME, last_name FROM   employees WHERE  employee_id IN (106,107,108,109,110); SELECT employee_id, first_name, TO_CHAR(NULL) LAST_NAME FROM   employees WHERE  employee_id IN (101,102,103,104,105) UNION SELECT

El Operador INTERSECT

La intersección de dos conjuntos son las filas que son comunes en ambas. El Orden el cual aparecen las consultas en una Consulta Compuesta no afecta el resultado. SELECT deptno, TRIM(dname), TRUNC(dated) FROM old_dep INTERSECT SELECT dept_id, TRIM(dname), TRUNC(startd) FROM new_dep ORDER BY deptno;

El Operador UNION

Un UNION desarrolla un UNION ALL posteriormente Ordena el resultado a través de todas las columnas de izquierda a derecha y por ultimo remueve los registros duplicados. Las filas son ordenadas en base a todas las columnas de izquierda a derecha. El orden de las consulta que esta en una consulta compuesta no afecta el resultado final. SELECT deptno, TRIM(dname), TRUNC(dated) FROM old_dep UNION SELECT dept_id, TRIM(dname), TRUNC(startd) FROM new_dep ORDER BY deptno;

El Operador UNION ALL

UNION ALL toma dos conjuntos de resultado y los concatena en un solo conjunto de resultado. El conjunto de resultado es de dos Consultas que deben seleccionar el mismo número de columnas. Y las columnas de las dos consultas deben tener el mismo tipo de datos. Las columnas no deben tener el mismo nombre de columna. El UNION ALL de las dos tablas convierte todos los valores en tipo de dato con más nivel de precisión. El orden de las filas es las filas de la primera tabla ordenas según fueron almacenadas seguidas por las filas de la segunda tabla ordenadas según fueron almacenadas. Cuando ordenamos el conjunto de resultado del UNION ALL debemos utilizar los nombres de columnas de la primera consulta. Ya que siempre los nombres de columnas de la primera consulta son lo que devuelve el UNION ALL. SELECT deptno, dname, dated FROM old_dep UNION ALL SELECT dept_id, dname, startd FROM new_dep ORDER BY dated; Un UNION ALL devuelve las filas agrupadas de cada consulta en su orde

Operadores de Conjuntos

Las consultas compuestas están conformadas de dos o más Consultas. Ligadas con uno o más operadores  de conjuntos. El resultado final es solo un conjunto de resultado. Las consultas compuestas están conformadas por varias consultas, pero no son subquerys. Un Subquery genera un resultado que utilizado por otra consulta. Las consultas en una Consulta Compuesta se ejecutan independientemente y una etapa de la ejecución combina el resultado, esta combinación es acompañada por un ordenamiento existiendo una excepción para el operador UNION ALL, el cual solo lista las filas de cada consulta.