Ayuda ejercicios unidad 7: Actualización de datos (II)


5. Eliminar los pedidos del representante Luis Antonio. (2 filas afectadas)

DELETE FROM pedidos

WHERE rep IN (SELECT numemp FROM empleados 

				WHERE nombre = 'Luis Antonio');

6. Eliminar las oficinas que no tengan empleados. (11 filas afectadas)

DELETE oficinas

WHERE NOT EXISTS (SELECT *

				FROM empleados WHERE empleados.oficina = oficinas.oficina);

7. Intenta eliminar el empleado 102. Te saldrá un error : "Instrucción DELETE en conflicto con la restricción..."

DELETE empleados WHERE numemp=102;

Reflexiona sobre el error y elabora una consulta que liste los empleados que pueden dar problemas (aquí no se trata de utilizar operaciones aprendidas en este tema sino de practicar la integridad referencial y de paso recordar instrucciones vistas en temas anteriores).

SELECT * from empleados

WHERE numemp IN (select jefe from empleados)

UNION ALL

SELECT * FROM empleados

WHERE numemp IN (SELECT dir FROM oficinas)

UNION ALL

SELECT * FROM empleados

WHERE numemp IN (SELECT rep FROM pedidos)

UNION ALL

SELECT * FROM empleados

WHERE numemp IN (SELECT repclie FROM clientes)

ORDER BY numemp

Elabora ahora una consulta que liste los que se pueden borrar sin problemas.

SELECT numemp FROM empleados

EXCEPT

SELECT numemp from empleados

WHERE numemp IN (select jefe from empleados)

EXCEPT

SELECT numemp FROM empleados

WHERE numemp IN (SELECT dir FROM oficinas)

EXCEPT

SELECT numemp FROM empleados

WHERE numemp IN (SELECT rep FROM pedidos)

EXCEPT

SELECT numemp FROM empleados

WHERE numemp IN (SELECT repclie FROM clientes)

ORDER BY numemp

Borra el primero de la lista, éste sí lo puedes borrar.

DELETE empleados WHERE numemp=112;

8. Eliminar los pedidos de productos de ACI cuyo precio de venta en el pedido no corresponda con el precio unitario del producto de la tabla de productos. (4 filas afectadas)

DELETE FROM pedidos

WHERE fab = 'ACI' AND Importe/cant <> (SELECT precio FROM productos WHERE fab = idfab AND idproducto = producto);

9. Ahora vamos a recuperar las tablas tal cual estaban al principio, para ello utilizaremos las copias realizadas al principio de Nuevaoficinas, etc. Lo más cómodo será vaciar las tablas y rellenarlas de nuevo con los datos de las tablas Nueva...

Empieza por eliminar los datos de las tablas. Utilizamos TRUNCATE en la tabla pedidos porque no está referenciada y para que el contador empiece desde 1 otra vez

TRUNCATE TABLE pedidos

DELETE productos

DELETE clientes

UPDATE oficinas SET dir = NULL; -- Para poder borrar los empleados

UPDATE empleados SET oficina=NULL, jefe=NULL; -- Para poder borrar las oficinas y los empleados respectivamente.

DELETE oficinas;

DELETE empleados;

Atrás  Inicio  Adelante





Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies


© aulaClic. Todos los derechos reservados. Prohibida la reproducción por cualquier medio.