Ejercicios

Ejercicios propuestos y resueltos

Al igual que para la creacion de la base de datos, las consultas, inserciones y actualizaciones se las pueden realizar de 2 maneras:
  • Mediante sentencias SQL.
  • De manera gráfica. 
El primer  ejercicio los realizaremos tanto en forma grafica como con sentencias SQL.


1. Actualizar el precio unitario de los productos de la categoría CARNICOS, subiéndolos en un 10%.

Forma Gráfica

Para realizar este ejercicio de manera grafica nos ubicamos en pestaña crear, diseño de consulta. A continueacion se nos muestra todas las tablas de nuestra base de datos, de entre las cuales se seleccionaran las que participaran en la consulta. 


 Para hacer este ejercicio debemos recordar que cada producto de la tabla PRODUCTOS pertenece a una sola categoria, la cual se encuentra en la tabla CATEGORIAS. Por lo tanto seleccionamos las tablas PRODUCTOS y CATEGORIAS. Una vez selecionada las tablas respectivas procedemos a hacer un select de los registros a los cuales queremos actualizar su precio. Para esto nos ubicamos en  SELECCIONAR.

Con la ayuda de la siguiente tabla seleccionamos todos los registros de PRODUCTOS que pertenezcan a la categoria CARNICOS, la cual es la categoria 100.


En esta tabla tenemos las filas Campo, en esta fila colocamos todos los parametros que queremos mostrar. La fila Tabla indica a que tabla pertenece cada parámetro de Campo. Orden nos permite mostrar la consulta ordenada de acuerdo a algun parametro. Con Mostrar podemos seleccionar que parametros se mostraran o no en la consulta final. Por último Criterios nos permite indicar el criterio para la consulta. Con esto presionamos Ejecutar y obtenemos lo siguiente:



 
Ahora procedemos a actualizar los precios unitarios actuales en un 10% a su valor. Para esto seleccionamos Actualizar.


Como antes se nos mostrara una tabla de ayuda, la cual contiene las mismas filas que la tabla mostrada para hacer la operación de selección. Esta nueva tabla cuenta con una nueva fila Actualizar a, en la cual se deberá indicar el criterio para actualizar un campo especifico. En este caso se requiere actualizar el PRECIOUNIT, para lo cual escribimos [PRODUCTOS].[PRECIOUNIT]+(0,1*[PRODUCTOS].[PRECIOUNIT]) como se indica a continuacion.  

Como antes precionamos Ejecutar y obtenemos lo siguiente.

Como podemos ver los precios fueron actualizados aumentando el 10% a su valor inicial.

Con sentencias SQL
 
Con el uso de sentencias SQL tendriamos el siguiente codigo:
UPDATE PRODUCTOS
SET PRECIOUNIT= PRECIOUNIT*1.10
WHERE CATEGORIAID =(SELECT CATEGORIAID
FROM CATEGORIAS
WHERE NOMBRECAT='CARNICOS')
Precionamos Ejecutar y obtenemos el mismo resultado, que lo realizado de manera grafica.


2. Actualizar el teléfono celular del proveedor cuyo contacto es MANUEL ANDRADE, con el valor 099010291.

Con el uso de sentencias SQL tendriamos el siguiente codigo:
UPDATE PROVEEDORES
SET CELUPROV = 099010291
WHERE CONTACTO ='MANUEL ANDRADE'
Resultado


 3. Borrar el producto YOGURT DE SABORES.

Con el uso de sentencias SQL tendriamos el siguiente codigo:
DELETE FROM PRODUCTOS
WHERE DESCRIPCION ='YOGURT DE SABORES'
Resultado
Se nos mostrara una pantalla de confirmacion para poder eliminar todo el registro del producto YOGURT DE SABORES.
  
Podemos ver que en la tabla PRODUCTOS ya no consta el producto de id igual a 8, el cual le correspondia a YOGURT DE SABORES.


4. Mostrar todas las órdenes: el id de la orden, el apellido y el nombre del empleado que la atendió, el nombre de la compañia cliente y la fecha de la orden.

Con el uso de sentencias SQL tendriamos el siguiente código:
SELECT o.ORDENID,((TRIM(e.NOMBRE)&'   ')& TRIM(e.APELLIDO))as Empleado,cli.NOMBRECIA, o.FECHAORDEN
FROM CLIENTES cli, EMPLEADOS e, ORDENES o
WHERE cli.CLIENTEID=o.CLIENTEID AND e.EMPLEADOID = o.EMPLEADOID
Resultado


5. Mostrar la suma total de cada tipo de producto pedidos en todas las órdenes.

Con el uso de sentencias SQL tendriamos el siguiente código:
SELECT do.ORDENID, p.PRODUCTOID, (SUM(p.PRECIOUNIT*do.CANTIDAD)) AS ['Suma']
FROM PRODUCTOS p INNER JOIN DETALLE_ORDENES do
ON p.PRODUCTOID=do.PRODUCTOID
GROUP BY do.ORDENID, p.PRODUCTOID, p.PRECIOUNIT
ORDER BY ORDENID;

Resultado
6. Mostrar el número de órdenes atendidas por cada empleado, incluidos los que tienen 0 órdenes.

Con el uso de sentencias SQL tendriamos el siguiente código:
SELECT e.EMPLEADOID AS [ID_EMPLEADO] ,((TRIM(e.NOMBRE)&'   ')& TRIM(e.APELLIDO)) AS [EMPLEADO],  COUNT (o.ORDENID)AS [ORDENES]
FROM EMPLEADOS  e LEFT JOIN ORDENES  o
ON e.EMPLEADOID=o.EMPLEADOID
GROUP BY e.EMPLEADOID, e.NOMBRE, e.APELLIDO;

Resultado
 
7. Muestre los proveedores y la suma de dinero vendido en los productos de ese proveedor. 

Con el uso de sentencias SQL tendriamos el siguiente código:
SELECT p.PROVEEDORID as [ID_PROVEEDOR], p.NOMBREPROV as [NOMBRE_PROVEEDOR],sum(de.CANTIDAD*pr.PRECIOUNIT)as ['VENTAS']
FROM (PROVEEDORES p INNER JOIN PRODUCTOS pr
ON pr.PROVEEDORID = p.PROVEEDORID)
INNER JOIN DETALLE_ORDENES de
ON de.PRODUCTOID = pr.PRODUCTOID
GROUP BY p.PROVEEDORID, p.NOMBREPROV

Resultado
 PROCEDIMIENTOS ALMACENADOS

Access 2010 no permite crear procedimientos almacenados (STORED PROCEDURES), sin embargo estos pueden ser implementados usando la instrucción WHERE y mediante la utilización de PARÁMETROS.
8. Escriba un procedimiento almacenado que reciba como parámetro un código de proveedor y devuelve el número de órdenes en las que están incluidos productos de ese proveedor.

Con el uso de sentencias SQL tendriamos el siguiente código:
SELECT p.PROVEEDORID, COUNT(ordenid) as ['Numero de ordenes']
FROM  (DETALLE_ORDENES AS do INNER JOIN PRODUCTOS AS p on do.PRODUCTOID=p.PRODUCTOID) INNER JOIN PROVEEDORES AS pr on pr.PROVEEDORID=p.PROVEEDORID
WHERE pr.PROVEEDORID=[Ingrese un código de proveedor]
GROUP BY p.PROVEEDORID;

Resultado
Se nos pide entonces ingresar un código de proveedor 


  9. Escriba un procedimiento almacenado que reciba como parámetro un nombre de una categoría y devuelva el código del producto de esa categoría que tiene más unidades vendidas.


Con el uso de sentencias SQL tendriamos el siguiente código:
SELECT p.PRODUCTOID, MAX(do.CANTIDAD) AS [Ventas]
FROM (CATEGORIAS AS c INNER JOIN PRODUCTOS AS p on  c.CATEGORIAID=p.CATEGORIAID) INNER JOIN DETALLE_ORDENES AS do on  do.PRODUCTOID=p.PRODUCTOID
WHERE c.NOMBRECAT=[Ingrese un nombre de categoria]
GROUP BY p.PRODUCTOID;

Resultado
Se nos pide entonces ingresar el nombre de una categoría. 



                                         
                                                      

No hay comentarios:

Publicar un comentario