Ir al contenido principal

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 employee_id, TO_CHAR(NULL) FIRST_NAME, last_name
FROM   employees
WHERE  employee_id IN (106,107,108,109,110);


SELECT employee_id, first_name, last_name
FROM   employees staff_permanent
WHERE  employee_id IN (100,101,102,103,104,105,106,107,108)
UNION
SELECT employee_id, first_name, last_name
FROM   employees staff_permanent
WHERE  employee_id IN (109,110,111,112,113,114,115,116,117)
MINUS
SELECT employee_id, first_name, last_name
FROM   employees blacklist
WHERE  employee_id IN (100,105,110,115);

SELECT employee_id, first_name, last_name
FROM   employees staff_permanent
WHERE  employee_id IN (100,101,102,103,104,105,106,107,108)
UNION
(SELECT employee_id, first_name, last_name
FROM   employees staff_permanent
WHERE  employee_id IN (109,110,111,112,113,114,115,116,117)
MINUS
SELECT employee_id, first_name, last_name
FROM   employees blacklist

WHERE  employee_id IN (100,105,110,115));

Comentarios