miércoles, 9 de mayo de 2012

Cursor


delimiter //

create procedure clientedelmes()

begin
declare Cid_cliente varchar (20);
declare Cmes date;
declare Cnombreclient varchar (40);
declare Cvalor int (40);

declare cursorclientemes cursor for Select cliente.id_cliente, cliente.nombre_cliente, transacciones.valortransaccion,  transacciones.fechatransaccion
from cliente,transacciones 
where transacciones.id_cliente = cliente.id_cliente 
and month (fechatransaccion)= MONTH(DATE_ADD(CURDATE(),INTERVAL - 1 MONTH))
and valortransaccion >= (50000)
group by id_cliente;

open cursorclientemes;
cursorclientemes_loop: LOOP
fetch cursorclientemes into Cid_cliente, Cnombreclient, Cvalor, Cmes;

insert into clientemes values (Cid_cliente, Cnombreclient, Cvalor, Cmes);

END LOOP cursorclientemes_loop; 
close cursorclientemes;
END;
//

call clientedelmes//





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 ;


miércoles, 7 de marzo de 2012

Consultas


Listar los clientes (nombre) que compraron un artículo determinado:

SELECT cliente.nombre_cliente,transacciones.id_articulo
FROM transacciones,cliente
WHERE transacciones.id_cliente =cliente.id_cliente
AND transacciones.id_articulo ="3";



SELECT cliente.nombre_cliente,transacciones.id_articulo
FROM transacciones,cliente
WHERE transacciones.id_cliente =cliente.id_cliente
AND transacciones.id_articulo ="2";


Listar los tipos de artículos vendidos por vendedor:

SELECT tipo.descripcion, transacciones.id_articulo
FROM transacciones, tipo
WHERE transacciones.id_articulo = tipo. id_tipo;


Listar los clientes y vendedores para el día de hoy:

SELECT cliente.nombre_cliente,empleado.nombre
FROM cliente,empleado,transacciones
WHERE transacciones.fechatransaccion = "2012-02-15";