Post on 14-Apr-2018
7/27/2019 Solucion Ejercicios Pag 181
1/5
1.- Modifica el nmero de plazas con un valor igual a lamitad en aquellos centros con menos de dos profesores
UPDATE CENTROS SET NUM_PLAZAS=NUM_PLAZAS/2
WHERE COD_CENTRO IN (SELECT COD_CENTRO FROM PROFESORES
GROUP BY COD_CENTRO
HAVING COUNT(*)
7/27/2019 Solucion Ejercicios Pag 181
2/5
PARA CAMBIAR SALARIO DE PESETAS A EUROS
SELECT * FROM PERSONAL
UPDATE PERSONAL SET SALARIO=ROUND(SALARIO/166.386)
ESTO ES PARA ELIMINAR LA FUNCION DE MARTINEZ
UPDATE PERSONAL SET FUNCION=NULL
WHERE APELLIDOS='Martnez Salas, Fernando'
PARA CAMBIAR EL OFICIO LA PRIMERA EN MAYUSCULAS
UPDATE PERSONAL SET FUNCION=INITCAP(FUNCION)
============== TABLAS ARTICULOS/TIENDAS/FABRICANTES/PEDIDOS/VENTAS
6.- Da de alta un nuevo artculo de 'Primera' categora paralos fabricantes de 'FRANCIA' y abastece con 5 unidadesde ese artculo a todas las tiendas y en la fecha de hoy.
PRIMERO INSERTAMOS EL NUEVO ARTICULO EN LA TABLA ARTICULOS
INSERT INTO ARTICULOS
SELECT 'PAN',COD_FABRICANTE,5,'Primera',4,4,30
FROM FABRICANTES WHERE PAIS='FRANCIA'
LUEGO INSERTAMOS EN LA TABLA PEDIDOS EL NUEVO ARTICULO
INSERT INTO PEDIDOS
SELECT NIF,'PAN',30,8,'Primera',SYSDATE,5 FROM TIENDAS
O TAMBIEN
INSERT INTO PEDIDOS
SELECT NIF,'PAN',(SELECT COD_FABRICANTE FROM FABRICANTES WHERE
PAIS='FRANCIA'),8,'Primera',SYSDATE,5 FROM TIENDAS
7.- Inserta un pedido de 20 unidades en la tienda '1111-A' con el artculo que mayor nmero de ventas hayarealizado.
INSERT INTO PEDIDOS
SELECT '1111-A',ARTICULO,COD_FABRICANTE,PESO,CATEGORIA,SYSDATE,20FROM VENTAS
GROUP BY ARTICULO,COD_FABRICANTE,PESO,CATEGORIA
HAVING COUNT(*)=(SELECT MAX(COUNT (*)) FROM VENTAS
GROUP BY ARTICULO,COD_FABRICANTE,PESO,CATEGORIA)
PREGUNTAR 7.-
INSERT INTO PEDIDOS
SELECT '1111-A',ARTICULO,COD_FABRICANTE,PESO,CATEGORIA,SYSDATE,20 FROM
VENTAS
GROUP BY ARTICULO,COD_FABRICANTE,PESO,CATEGORIA
HAVING SUM(UNIDADES_VENDIDAS)=(SELECT MAX(SUM(UNIDADES_VENDIDAS)) FROM
VENTAS
GROUP BY ARTICULO,COD_FABRICANTE,PESO,CATEGORIA)
7/27/2019 Solucion Ejercicios Pag 181
3/5
8.- Da de alta una tienda en la provincia de 'MADRID' yabastcela con 20 unidades de cada uno de los artculosexistentes.
PRIMERO CREAR LA TIENDA Y LUEGO VAMOS A LLENARLO DE ARTICULOS.
CREAMOS LA TIENDA
INSERT INTO TIENDAS
VALUES('2020-A','LA PANADERIA','C/ ALCALA 340','Madrid','MADRID',28027)
AHORA VAMOS A ABASTECERLO EN PEDIDOS
INSERT INTO PEDIDOS
SELECT '2020-A',ARTICULO,COD_FABRICANTE,PESO,CATEGORIA,SYSDATE,20 FROM
ARTICULOS
9.-Da de alta dos tiendas en la provincia de 'SEVILLA' y abastcelas con 30
unidades de artculos de la marca de fabricante 'GALLO'.
INSERT INTO TIENDASVALUES ( 3030-A ,'SEVILLA1','C/SEVILLA 20,'SEVILA','SEVILLA',28001)
INSERT INTO TIENDASVALUES ( 4040-A ,'SEVILLA 2','C/SEVILLA 30','SEVILA','SEVILLA',28001)
INSERT INTO PEDIDOSSELECT NIF,ARTICULO,A.COD_FABRICANTE,PESO,CATEGORIA,SYSDATE,30 FROMARTICULOS A,TIENDAS,FABRICANTES FWHERE A.COD_FABRICANTE=F.COD_FABRICANTE
AND F.NOMBRE='GALLO' AND PROVINCIA='SEVILLA'
10.-Realiza una venta para todas las tiendas de 'TOLEDO' de 10 unidadesen los artculos de 'Primera' categora.
INSERT INTO VENTASSELECT NIF,ARTICULO,COD_FABRICANTE,PESO,CATEGORIA,SYSDATE,10 FROMARTICULOS A,TIENDASWHERE PROVINCIA='TOLEDO' AND CATEGORIA='Primera'
11.- Para aquellos artculos de los que se hayan vendido ms de 30unidades, realiza un pedido de 10 unidades para la tienda con NIF '5555-B'con la fecha actual.
INSERT INTO PEDIDOSSELECT DISTINCT '5555-B',ARTICULO, COD_FABRICANTE, PESO, CATEGORIA,SYSDATE, 10 FROM VENTASWHERE (ARTICULO,COD_FABRICANTE,PESO,CATEGORIA) IN (SELECTARTICULO,COD_FABRICANTE,PESO,CATEGORIA FROM VENTASGROUP BY ARTICULO,COD_FABRICANTE,PESO,CATEGORIAHAVING SUM(UNIDADES_VENDIDAS)>30)
7/27/2019 Solucion Ejercicios Pag 181
4/5
12.- Cambia los datos de la tienda con NIF '1111-A' igualndolos a los de latienda con NIF '2222-A'.
UPDATE TIENDAS
SET (NOMBRE,DIRECCION,POBLACION,PROVINCIA,CODPOSTAL)=(SELECTNOMBRE,DIRECCION,POBLACION,PROVINCIA,CODPOSTAL FROM TIENDAS WHERENIF='2222-A')WHERE NIF='1111-A'
13.- Cambia todos los artculos de 'Primera' categora a 'Segunda'categora del pas 'ITALIA'.
UPDATE ARTICULOSSET CATEGORIA='Segunda'WHERE CATEGORIA='Primera'AND COD_FABRICANTE=(SELECT COD_FABRICANTE FROM FABRICANTES
WHERE PAIS='ITALIA')
14.- Modifica aquellos pedidos en los que la cantidad pedida sea superiora las existencias del artculo, asignando el 20 por 100 de las existencias ala cantidadque se ha pedido.
UPDATE PEDIDOSSET UNIDADES_PEDIDAS=0.2*(SELECT EXISTENCIAS FROM ARTICULOS A,PEDIDOS PWHERE A.ARTICULO=P.ARTICULO AND A.COD_FABRICANTE=P.COD_FABRICANTEAND A.PESO=P.PESO AND A.CATEGORIA=P.CATEGORIAAND EXISTENCIAS
7/27/2019 Solucion Ejercicios Pag 181
5/5
17.- Borra los pedidos de 'Primera' categora cuyo pas de procedencia sea'BLGICA'.
DELETE FROM PEDIDOSWHERE (ARTICULO,COD_FABRICANTE,PESO,CATEGORIA) IN (SELECTARTICULO,COD_FABRICANTE,PESO,CATEGORIA FROM PEDIDOSWHERE CATEGORIA='Primera'AND COD_FABRICANTE=(SELECT COD_FABRICANTE FROM FABRICANTESWHERE PAIS='BELGICA'))
18.- Borra los pedidos que no tengan tienda.
DELETE FROM PEDIDOSWHERE NIF NOT IN (SELECT NIF FROM TIENDAS)
19.-Resta uno a las unidades de los ltimos pedidos de la tienda con NIF'5555-B'.
UPDATE PEDIDOS
SET UNIDADES_PEDIDAS= UNIDADES_PEDIDAS-1
WHERE NIF='5555-B' AND
FECHA_PEDIDO=(SELECT MAX(FECHA_PEDIDO) FROM PEDIDOS
WHERE NIF='5555-B')