Databases

T02-005- Modificación de registros a partir de una consulta.

Enunciado

La acción de actualizar registros mediante la sentencia UPDATE tambié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 sentencia UPDATE.

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

DML

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)