La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título.

Presentaciones similares


Presentación del tema: "Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título."— Transcripción de la presentación:

1

2 Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título Nombre Cliente Calle numerocalle, ciudad bajo el titulo Direccion Edad-calcular Categoría Sexo

3 Pregunta 1. Qué se pide? Select o print? Tenemos los datos? Qué tabla es la utilizada? Nombre Cliente: concatenar n1, n2, a1, a2 Direccion: concatenar calle, nr, ciudad Edad: calcular a partir de fecha nacimiento, usar funcion Categoria: depende de que? Sexo: depende de que? Uso de Case

4

5 select primer_nombre+' '+segundo_nombre+', '+primer_apellido+' '+segundo_apellido as 'Nombre Cliente', calle+' '+numero+', '+ciudad as Direccion, datediff(year, fecha_nacimiento, getdate()) as Edad,… … From cliente

6 … categoria= case when datediff(year, fecha_nacimiento, getdate()) <17 then 'Adolescente' when datediff(year, fecha_nacimiento, getdate()) between 17 and 30 then 'Joven' when datediff(year, fecha_nacimiento, getdate()) between 31 and 60 then 'Adulto' when datediff(year, fecha_nacimiento, getdate()) >60 then 'Adulto Mayor' end

7 sexo= case sexo when 'm' then 'Masculino' when 'f' then 'Femenino' end

8 create procedure uno as select primer_nombre+' '+segundo_nombre+', '+primer_apellido+' '+segundo_apellido as 'Nombre Cliente', calle+' '+numero+', '+ciudad as Direccion, datediff(year, fecha_nacimiento, getdate()) as Edad, categoria= case when datediff(year, fecha_nacimiento, getdate()) <17 then 'Adolescente' when datediff(year, fecha_nacimiento, getdate()) between 17 and 30 then 'Joven' when datediff(year, fecha_nacimiento, getdate()) between 31 and 60 then 'Adulto' when datediff(year, fecha_nacimiento, getdate()) >60 then 'Adulto Mayor' end, sexo= case sexo when 'm' then 'Masculino' when 'f' then 'Femenino' end from cliente

9 Para mantener un stock actualizado de la cantidad existente de cada producto, el dueño necesita que cada vez que se quiera comprar cierta cantidad de un producto se tome en cuenta si es que existe la cantidad requerida (p.e. si tengo 15 pañuelos desechables no puedo vender 16…solo hasta 15). Si no existe la cantidad requerida, no se puede hacer la compra. Cuando se pueda hacer la compra, se debe registrar (insertar datos en registros de compra) y actualizar la cantidad en stock del producto en cuestión. Utilice IF ELSE, RETURN, PRINT, Parámetros de entrada. Tome en cuenta las condiciones que podrían surgir al hacer esto, imprimir mensajes en pantalla.

10 Pregunta 2. Qué se pide? (qué entendieron del problema) Qué tablas participan? Uso de Insert, Update, Delete? Uso de parametros de entrada? Qué datos participan? Cuál es la condicion pedida? Cuáles son las condiciones básicas?

11 create procedure dos char(1))

12 Condicion pedida: existe en stock la cantidad del producto que se va a comprar? if ((select stock from producto where

13 Otras condiciones Verificar si existe otro registro con las mismas claves… if not exists (select * from compra where and and Verificar si existe cliente if exists (select * from cliente where Verificar si existe producto if exists (select * from producto where

14 Acciones a realizar si se cumple primera condicion insert into compra (rut_cliente, codigo_producto, fecha_compra, cantidad, update producto set where Sino, no se inserta registro en compra ni se actualiza stock

15 create procedure dos char(1)) as if not exists (select * from compra where and and begin if exists (select * from cliente where begin if exists (select * from producto where begin if ((select stock from producto where begin insert into compra (rut_cliente, codigo_producto, fecha_compra, cantidad, update producto set where return 0 /*ok*/ end else return 4 end else return 1 /*no existe producto*/ end else return 2 /*no existe el cliente*/ end else return 3

16 int smalldatetime ' ', 1, 't' print 'Registro de compra ingresado correctamente.' else print 'Prducto no existe' else print 'Cliente no existe' else print 'Registro ya ingresado' else print 'No se puede registrar la compra, no hay productos suficientes'

17 Después de un largo análisis, el dueño decidió cada cierto tiempo bajar en un 10% el precio de aquellos productos que estén vencidos a ese día, y que sean de una marca especifica. Si se dan esas condiciones, desea que le muestre el nombre de los productos actualizados con su nuevo precio. Sino, imprime mensaje en pantalla. Como funcionara esto? Un día cualquiera el dueño decidirá bajar precios. Para ello utilizara el PA creado por usted y el solo ingresara la marca a considerar. Si hay productos de esa marca que estén vencidos a ese día, se le bajara el precio un 10%. Utilice IF ELSE, RETURN, PRINT, Parámetros de entrada. Tome en cuenta las condiciones que podrían surgir al hacer esto, imprimir mensajes en pantalla.

18 Pregunta 3. Qué se pide? (qué entendieron del problema) Qué tablas participan? Uso de Insert, Update, Delete? Uso de parametros de entrada? Qué datos participan? Cuál es la condicion pedida? Cuáles son las condiciones básicas?

19 create procedure tres varchar(15))

20 Condicion pedida: existen productos vencidos al dia de hoy (cuando ejecuto el PA) de la marca especifica if exists (select * from producto where fecha_vencimiento

21 Otras condiciones Verificar si existe la marca if exists (select * from producto where

22 Acciones a realizar si se cumple primera condicion update producto set precio=precio*0.9 where fecha_vencimiento

23 create procedure tres varchar(15)) as if exists (select * from producto where fecha_vencimiento

24 int 'nestle' print 'Precios cambiados' else print 'No hay productos que cumplan con requisitos'

25 Algunos clientes pagan su compra en efectivo e, con tarjeta de crédito t o con redcompra r. El dueño no confía en las tarjetas de crédito, por lo que no permite compras con tarjeta de crédito que superen 10 unidades de un producto. Genere un PA que controle este hecho al insertar una nueva compra. Ejemplo: se inserta en la tabla compra el cliente y, el producto x, la fecha actual (momento de la compra), cantidad del producto y forma de pago. Si ocurre la condición dada, debe imprimir un mensaje por pantalla y no permitir la compra. Utilice IF ELSE, RETURN, PRINT, Parámetros de entrada. Reutilice el código…

26 Bonus. Qué se pide? (qué entendieron del problema) Qué tablas participan? Uso de Insert, Update, Delete? Uso de parametros de entrada? Qué datos participan? Cuál es la condicion pedida? Cuáles son las condiciones básicas?

27 Condicion pedida: supera la cantidad del producto a comprar las 10 unidades y y la forma de pago es tarjeta de credito? if and

28 Condiciones basicas: igual que problema 2.

29 Acciones a realizar si no se cumple primera condicion insert into compra (rut_cliente, codigo_producto, fecha_compra, cantidad, Sino, no se inserta registro en compra…

30 create procedure bonus char(1)) as if not exists (select * from compra where and and begin if exists (select * from cliente where begin if exists (select * from producto where begin if and return 4 /*pago con tarjeta credito no puede superar cantidad 10*/ else insert into compra (rut_cliente, codigo_producto, fecha_compra, cantidad, return 0 /*ok*/ end else return 1 /*no existe producto*/ end else return 2 /*no existe el cliente*/ end else return 3

31 int smalldatetime ' ', 17, 't' print 'Registro de compra ingresado correctamente.' else print 'Prducto no existe' else print 'Cliente no existe' else print 'Registro ya ingresado' else print 'No se puede comprar mas de 10 productos con ese tipo de pago'


Descargar ppt "Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título."

Presentaciones similares


Anuncios Google