domingo, 22 de abril de 2012

Procedimiento


CREATE PROCEDURE realizarcompra (in pid_articulo varchar (20), pid_transaccion varchar (20), pid_cliente varchar (20), pfechatransaccion date, pvalor_transaccion int (40))
begin
insert into transacciones (id_cliente,id_articulo,id_transaccion,fechatransaccion,valor_transaccion) values ("3", "4", "1", "2010-10-10", "600000");
insert into transaccionxarticulo (id_articulo, id_transaccion) values ("401", "03");
end


Vistas


☻Vista1: Muestra el tipo y precio de cada articulo

create view vista1 as
select articulo.id_articulo,articulo.nombre,articulo.id_tipo,articulo.valor,tipo.descripcion from articulo,tipo
where articulo.id_tipo = tipo.id_tipo;
select * from vista1 ;




 ☻Vista2: Muestra las ventas que realiza un empleado en 3 meses

create view vista2 as
select empleado.id_empleado,empleado.nombre_emp
from empleado,transacciones
where empleado.id_empleado=transacciones.id_empleado
and fechatransaccion > (date_add(curdate(),interval -  3 month )) ;
select * from vista2 ;


☻ Consulta que utiliza las dos vistas (vista1 y vista2) y muestre que artículos ha vendido cada empleado

select vista1.id_articulo , vista1.nombre, vista2. nombre_emp, fechatransaccion  from artxtrans, transacciones, vista1, vista2
where vista1.id_articulo=artxtrans.id_articulo
and vista2.id_empleado=transacciones.id_empleado
and transacciones.id_transaccion=artxtrans.id_transaccion;


Consultas por descripción


select descripcion,count(*) from tipo
join articulo
on tipo.id_tipo = articulo.id_tipo
join artxtrans
on artxtrans.id_articulo=articulo.id_articulo
join transacciones
on transacciones.id_transaccion = artxtrans.id_transaccion
group by (descripcion);


Consultas Join


CONSULTA left outer join
select nombre,id_transaccion from articulo
left outer join transacciones
on transacciones.id_articulo = articulo.id_articulo
group by nombre;


select nombre_cliente, email,id_transaccion from cliente
left outer join transacciones
on transacciones.id_cliente = cliente.id_cliente
group by nombre_cliente;


CONSULTA right outer join 
select nombre,id_transaccion from articulo
right outer join transacciones
on transacciones.id_articulo = articulo.id_articulo
group by nombre;


select nombre_cliente,email,id_transaccion from cliente
right outer join transacciones
on transacciones.id_cliente = cliente.id_cliente
group by nombre_cliente;

CONSULTA join
Consulta joing que muestre el nombre, teléfono del cliente ademas del vendedor que hizo la venta y el articulo que se compro
select nombre_cliente,email,nombre_emp,nombre
from transacciones
join cliente
on transacciones.id_cliente = cliente.id_cliente
join empleado
on transacciones.id_empleado = empleado.id_empleado
join artxtrans
on artxtrans.id_transaccion = transacciones.id_transaccion
join articulo
on articulo.id_articulo = artxtrans.id_articulo
where fechatransaccion >  (date_add(curdate(),interval - 1 month)) ;






Consulta de una fecha especifica


Select cliente.id_cliente, cliente.nombre_cliente, transacciones.id_transaccion, transacciones.fechatransaccion, dayname('2012-02-03'),monthname('2012-02-03')
from cliente,transacciones,artxtrans,articulo
where transacciones.id_transaccion = artxtrans.id_transaccion
and transacciones.id_cliente = cliente.id_cliente
and fechatransaccion = ('2012-02-03')
group by id_cliente
order by nombre_cliente asc ;

Select cliente.id_cliente, cliente.nombre_cliente, transacciones.id_transaccion, transacciones.fechatransaccion, dayname('2012-02-15'),monthname('2012-02-15')
from cliente,transacciones,artxtrans,articulo
where transacciones.id_transaccion = artxtrans.id_transaccion
and transacciones.id_cliente = cliente.id_cliente
and fechatransaccion = ('2012-02-15')
group by id_cliente
order by nombre_cliente asc ;