FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Problema con Stored Procedure para actualizar tabla con datos de otra tabla.
Estimados Amigos:
Tengo dos tablas de una base de datos MySQL, una de ellas tiene datos sobre las cuotas sociales de un afiliado a una mutual, y la otra tiene un registro de pagos de estas cuotas sociales. Ej: Tabla CuotasSociales. ID Fecha pura saldo interes importepag Pagada Mes Af_Id 1 27/01/2012 0.000 0.000 0.000 59.000 1 Dec 2 2 27/01/2012 0.000 34.910 0.000 24.090 2 Dec 3 Tabla Planillas. Af_ID Valor Periodo 2 59.000 Dec 3 24.090 Dec Aproximadamente son 2000 registros en ambas tablas. Lo que necesito hacer es actualizar los datos de la tabla CuotasSociales con los datos de la tabla planilla, Pues anteriormente se inserto los registros mediante un procedimiento almacenado que inserta un valor (59,000 pesos, valor de la cuota social) en el campo importepag y un '1' en el campo pagada, valor que representa el pago total de la cuota(reg. N°1), la otra posibilidad es como se muestra en el reg. N°2, si el pago fue menor a 59 pesos, se inserta el valor pagado(24.090 pesos ) en el campo importepag y la diferencia respecto a 59 se ingresa en el campo saldo, se coloca un '2' en el campo pagada que representa un pago parcial. Los valores de la tabla planillas son extraidos de los descuentos por planillas de los afiliados.
Este procedimiento almacenado funciona bien, aunque demora en promedio 43seg. aprox., pero funciona. Despues de correr este procedimiento , se limpia la tabla planilla y se cargan nuevos datos que representan descuentos por otras modalidades por ej. descuentos por CBU, obviamente dentro del mismo periodo. Como dije arriba debo actualizar la tabla cuotassociales con estos nuevos datos de la tabla planillas. y aqui recide el problema que se me presenta. La logica de la actualizacion seria la siguiente: 1. tomar un registro de la tabla planillas, ver si existe el afiliado en la tabla cuotassociales. 2. si existe comprobar que el saldo sea mayor que cero ( es decir que este parcialmente pagada la cuota). actualizar el importepag y el campo pagada en '1' si la suma es igual a 59 o seguir con el valor '2' si aun es menor que 59. 3. Seguir los pasos 1 y 2 hasta el ultimo registro de la tabla planillas. Este es el procedimiento almacenado que intentar hacer esto.
pero me actualiza solo un registro. lo que he notado es que cuando el select dentro del repeat es nulo, directamente la variable done se pone a 1 y sale del bucle y termina el procedimiento. Uso como lenguaje anfitrion el PHP 5.3, pero hice ejecutar estos procedimiento con los clientes de MySQL: Navicat y EMS mysqlmanager. Sinceramente no se como modificar este procedimiento para que actualice todos los registro que correspondan. Gracias por su tiempo. Saludos.
__________________
Adrián Murúa. |
#2
|
||||
|
||||
Hola
Primera vez que veo algo tan complicado para llevar una simple cuenta por Cobrar. Saludos
__________________
Siempre Novato |
#3
|
||||
|
||||
Pues, eso , como se prodria hacer para hacerlo menos complicado.
__________________
Adrián Murúa. |
#4
|
||||
|
||||
Hola
No se como se hara menos complicado, eso dependera del punto de vista de cada quien. Como hago estas cosas: 1-Tabla cuentas por cobrar. En esta se tienen los datos del cliente y se tiene el balance de su cuenta con el dato inicial, los pagos realizados y los saldos. Esta tabla se actualiza de acuerdo al ID del cliente. No se cambian los datos, simpleente se insertan, el programa es el que hace los calculos. 2- Tabla cuentas por cobrar detalle. En esta se hace un detalle de todas las transacciones efectuadas a la cuenta de cada cliente. 3- Tabla clientes. Es evidente, los datos del cliente. No me parece muy logico dejar todo a la BD, me parece que los datos los tiene que generar el programa. Saludos PD: Por algun lado deje un programa completo para cuentas por cobrar y pagar, podrias buscar en el FTP del club por ahi debe de estar, creo que te daria alguna idea de como hacer estas cosas, NO mas eficientemente (eso se lo dejo a los Maestros) si no mas sencillo.
__________________
Siempre Novato |
#5
|
||||
|
||||
Gracias, por tu ayuda .
He intentado hacer que el programa haga los calculos pertinentes, pero tarda bastante tiempo, por supuesto que no debe ser la mejor rutina, por eso estaba probando realizarlo con procedimientos almacenados , voy a echar un vistazo a lo que tu me dices para guiarme , gracias por tu respuesta. Saludos.
__________________
Adrián Murúa. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Actualizar campos de una Tabla cuando se actualize otra tabla | RedVenom | Varios | 28 | 11-05-2011 18:19:38 |
Actualizar tabla con datos de otra tabla mediante UPDATE | Rockin | Firebird e Interbase | 18 | 28-11-2007 19:15:42 |
Actualizar un campo de una tabla con datos que se encuentran en otra tabla | Morphine | SQL | 4 | 15-12-2006 22:47:42 |
Dbgrid para insertar en una tabla pero cogiendo datos de otra tabla | taru | MySQL | 1 | 27-07-2006 15:36:12 |
Actualizar tabla con datos de otra tabla | ElDioni | SQL | 2 | 02-05-2006 16:04:04 |
|