SoloCodigo
Bases de Datos => MySQL => Mensaje iniciado por: MArio85 en Jueves 3 de Septiembre de 2009, 01:12
-
Hola tengo 3 Tablas en mysql:
Clientes
Clve_Cliente Razon_Social Direccion RFC ...................... Saldo
.
.
.
Facturas
Clve_Fact Clve_Cliente No_Fact Concepto ......... Saldo
.
.
.
Pagos
Clve_Pago Clve_Fact ......... Abono
.
.
Nota: Reemplaze "........." Por campos de las tablas que no son importantes para esta situacion en especifico.
Necesito algo que me actualize el saldo de facturas caundo se haga un pago y asi mismo se actualize el saldo del cliente (formado por la suma de todas las facturas). Por lo que eh visto lo que necesito son los triggers no? tengo la version 5. 0.19 de mysql por lo que creo si funcionan los triggers, pero no se como se usan, como se programarian los triggers o cuantos necesitaria para actualizar los saldos de las diferentes tablas???
Saludos
-
que tal Mario85,
si buscas en el foro veras dos temas que te podrían ayudar.
http://foros.solocodigo.com/viewtopic.php?f=58&t=40100&p=145646&hilit=trigger#p145646
http://foros.solocodigo.com/viewtopic.php?f=58&t=38270&p=139257&hilit=trigger#p139257
tambien puedes ve ejemplos en la pagina de soporte de mysql.
http://dev.mysql.com/doc/refman/5.0/es/create-trigger.html
si te fijas en los ejemplos tu necesitas un trigger de "AFTER INSERT" y lo vas a crear para la tabla pagos.
lo que si debes tomar en cuenta es que necesitas identificar "cual" cliente hace el pago para saber a cual cliente actualizar en tu tabla de clientes
ya dentro del trigger necesitas actualizar las tablas, ej, la de factura seria mas o menos así.
update pagos
set saldo=pagos.saldo - new.abono
where clve_fact=new.clve_fact;
esto tomando en cuenta la naturaleza de los conceptos, ya que es una abono a una factura el saldo de la factura sera igual a el saldo menos el abono realizado.
para la tabla cliente seria mas o menos asi:
NUMERO_FACTURA=new.clve_fact;
select SUM(t1.saldo) into SALDO_CLIENTE from facturas as t1,cliente as t2 where t1.clve_fact=NUMERO_FACTURA and t1.clve_cliente=t2.clve_cliente;
update clientes
set saldo =SALDO_CLIENTE;
para este caso tendras que declrar variables "NUMERO_FACTURA" Y "SALDO_CLIENTE" ya que lo que estas pidiendo es un "SUM" de las facturas pero segun tus tablas al momento de hacer un insert en pagos no se sabe cual es el cliente y por tanto se tiene que hacer un join con facturas para saber que cliente es, si tu tabla de pagos tuviera el campo clve_cliente no tuvieras que hacer el join.
bueno espero te halla servido de ayuda.