Databases
T02-005- Modificación de registros a partir de una consulta.
Enunciado
La acción de actualizar registros mediante la sentencia
UPDATEtambién puede ser utilizada con consultas para realizar modificaciones más complejas de los datos. Las consultas pueden formar parte de cualquiera de los elementos de la sentenciaUPDATE.
Ejemplo
El departamento 50 es el que tiene una media de salarios más bajo. Vamos a incrementarla aumentando el salario de los empleados que estén por debajo de la media de sus compañeros de departamento. El nuevo salario de esos empleados será el correspondiente a la media de los salarios del departamento 30, que es el segundo departamento que menor media salarial tiene.
UPDATE employees
SET SALARY = (
-- Media de salarios de empleados del departamento 30
SELECT AVG(SALARY)
FROM employees
WHERE DEPARTMENT_ID = 30
) WHERE DEPARTMENT_ID = 50 AND SALARY < (
-- Media de salarios de empleados del departamento 50
SELECT AVG(SALARY)
FROM employees
WHERE DEPARTMENT_ID = 50
);Ejercicio
Se debe trasladar el departamento cuyo nombre es 'IT' a la única dirección que consta en China
Tipo
Solución
UPDATE HR.departments
SET LOCATION_ID =
(
SELECT LOCATION_ID
FROM HR.locations JOIN HR.countries USING(COUNTRY_ID)
WHERE COUNTRY_NAME = 'China'
)
WHERE DEPARTMENT_ID = (
SELECT DEPARTMENT_ID
FROM HR.departments
WHERE DEPARTMENT_NAME = 'IT'
);
Prueba
SELECT * FROM HR.departments WHERE DEPARTMENT_ID BETWEEN 40 AND 70 ORDER BY DEPARTMENT_ID
LibrerÃas (Onfly databases)


