You are on page 1of 2

1:37:42

---------------------------------------------------------------------Que son las


consultas
SET--------------------------------------------------------------------------------
--------------------------------------------------------------

Union de registros pero no como un JOIN, sino como la sumatoria de conjuntos y no


la sumatoria de columnas como lo es en un JOIN.

En la UNION las columnas son las mismas, lo que yo paso es a tener mas registros

--Consultas SET
--UNION - MINUS - INTERSECT

-- obtenemos todos los empleados.


SELECT * FROM employees;

-- obtenemos para el empleado de ID 101 su puesto actual.


SELECT * FROM employees
WHERE employee_id=101;

-- se obtiene la historia de los empleados desde cuando a cuando estubo en cada


puesto.
SELECT * FROM job_history

-- se obtiene la historia del empleado de ID 101 desde cuando a cuando estubo en


cada puesto.
SELECT * FROM job_history
WHERE employee_id=101;

-- para obtener la historia completa de todos los empleados, se necesitara juntar


las dos tablas(la de employees y job_history) y asi
de este modo se podra saber todos los puestos que ocupo el empleado, ya que en
la tabla de employees tengo los puestos actuales de los empleados mientras que en
la tabla de job_history se tiene los puestos anteriores por los que paso el
empleado (por ejemplo si se desea saber del empleado de ID 101 todos los puesto
que obtuvo)
-- Al anexar registros de dos tablas diferentes con el operador UNION, la cantidad
de columnas para cada una de las dos tablas
debe ser la misma(no se puede anexar un registro que tiene 5 columnas con otro
que tiene 15 columnas), es por ello que en la consultas se deben especificar las
columnas(La misma cantidad de columnas).
-- Al ejecutar la sentencia completa se obtendra los registros de la tabla
employees con los registros de la tabla jo_history.
-- Los tipos de datos debe concidir tanto para las columnas de la consulta de
arriba con las columnas de la consulta de abajo.
-- Es posible identificar de que grupo vino cada consulta por ejemplo, una es del
actual y la otra es de historico o en otros podria especificar que es de factura y
la otra consulta es de una boleta.
-- Solo se tomara en cuenta la primera consulta para darle un alias a la columna,
ademas de la cantidad de columnas, los tipos de datos y a apartir de hacia abajo
las proximas consultas que se definan deberan contener las mismas cantidad de
columnas, tipos de datos.
-- Los registros repetidos los deja una sola vez en el conjunto de salida.
SELECT 'Actual' Grupo, employee_id emp_id, hire_date, SYSDATE, job_id,
department_id FROM employees -- obtenemos para el empleado de ID 101 su puesto
actual.
WHERE employee_id=101
UNION -- El operador UNION unira los registros de la consulta de arriba "SELECT *
FROM employees WHERE employee_id=101" con los registros de la consulta de abajo
"SELECT * FROM job_history WHERE employee_id=101;"
SELECT 'Historico', employee_id, start_date, end_date, job_id, department_id FROM
job_history -- se obtiene la historia del empleado de ID 101 desde cuando a cuando
estubo en cada puesto.
WHERE employee_id=101;

-- Al expresar el operador UNION de forma sola no devuelve repetidos, esto quiere


decir que solo junta los SELECT y aquellos registros que tengan los mismos valores
en todas las columnas se excluiran.
SELECT employee_id FROM employees -- obtenemos para el empleado de ID 101 su
puesto actual.
WHERE employee_id=101
UNION -- El operador UNION unira los registros de la consulta de arriba "SELECT *
FROM employees WHERE employee_id=101" con los registros de la consulta de abajo
"SELECT * FROM job_history WHERE employee_id=101;"
SELECT employee_id FROM job_history -- se obtiene la historia del empleado de ID
101 desde cuando a cuando estubo en cada puesto.
WHERE employee_id=101;

-- Al expresar el operador UNION ALL se evita excluir los valores repetidos(nos


trae todos aquellos registros e incluso aquellos que se repitan)
SELECT employee_id FROM employees -- obtenemos para el empleado de ID 101 su
puesto actual.
WHERE employee_id=101
UNION ALL-- El operador UNION unira los registros de la consulta de arriba "SELECT
* FROM employees WHERE employee_id=101" con los registros de la consulta de abajo
"SELECT * FROM job_history WHERE employee_id=101;"
SELECT employee_id FROM job_history -- se obtiene la historia del empleado de ID
101 desde cuando a cuando estubo en cada puesto.
WHERE employee_id=101;

-- El MINUS es la resta del segundo conjunto al primer conjunto. Es sacar del


primer conjunto todo lo que esta en el segundo conjunto.

You might also like