Unidad 7. Ejercicio paso a paso: Modificar datos con UPDATE


Nota: Para realizar los ejercicios necesitarás la base de datos Gestion8.

Objetivo

Modificar los datos de una tabla.

Ejercicio paso a paso

Subir un 5% el precio de todos los productos del fabricante QSA. (3 filas afectadas)


UPDATE productos SET precio = ROUND(precio * 1.05,2)

WHERE idfab = 'qsa';

Resultado:

idfab idproducto precio
qsa xk47 3,73
qsa xk48 1,41
qsa xk48a 1,55

Poner a cero las ventas y cuota del empleado Luis Garcia, si hay varios con el mismo nombre actualizarlos todos. (1 filas afectadas)


UPDATE empleados set ventas=0, cuota=0

WHERE nombre = 'Luis Garcia';

Cambiar los empleados de la oficina 40 a la oficina 30. (3 filas afectadas)


UPDATE empleados SET oficina = 30

WHERE oficina = 40;

Actualizar los pedidos del fabricante rei dejando como representante el empleado asignado al cliente (2 filas afectadas). Lo más cómodo es, primero sacar la consulta que obtiene los pedidos a actualizar, y después convertirla a UPDATE.


UPDATE pedidos SET rep=numemp

FROM pedidos inner join (clientes inner join empleados ON repclie=numemp) ON clie=numclie

WHERE rep <> numemp and fab ='rei'

Estos son los pedidos afectados y cómo deben quedar, los pedidos en los que el representante ya es el correcto no se tienen que actualizar:

codigo numpedido clie rep fab
20 113042 2113 104 rei
21 113045 2112 108 rei

Actualizar el campo objetivo de la oficina 30 con las cuotas de los empleados asignados a ella.


UPDATE oficinas set oficinas.objetivo =(SELECT SUM (cuota)

from empleados where oficinas.oficina= empleados.oficina) 

where oficina=30;

Actualizar el precio de los productos de BIC obteniendo el nuevo valor del precio medio del artículo vendido en los pedidos (si hay pedidos). Primero sacamos la lista y después redactar la UPDATE. Se puede hacer de dos formas, actualizando únicamente los productos de BIC que tienen pedidos, o actualizando todos los productos de BIC. En cualquiera de los dos casos los productos deberán acabar con el precio que aparece en la columna Nuevo.


UPDATE productos SET precio = round(ISNULL((SELECT avg(importe/cant) FROM pedidos WHERE fab=idfab and producto=idproducto),precio),2)

WHERE idfab='bic';

Estos son los productos que tenemos de BIC, precio es el precio actual, media es el precio medio de pedidos, y nuevo el valor que deberá quedar en precio después de actualizar:

idfab idproducto precio media nuevo
bic 41003 6,52 5,1566 5,16
bic 41089 2,25 NULL 2,25
bic 41672 1,80 NULL 1,80

   Inicio    



.