Balances Con Variables en Mysql
Balances Con Variables en Mysql
Balances Con Variables en Mysql
creditos y los debitos (depositos y retiros). Mi intencion es realizar una consulta donde me despliegue cada transaccion y me presente el balance actual. pe.: Deposito Retiro Balance 500 0 500 1000 0 1500 0 600 900 0 300 600 no se si es conveniente tener una sola tabla llamada transaccion o realizar dos tablas, una con los credito y otra con lo debitos. Agradecere la ayuda que me puedan dar.
Citar Escrito el 22 May 2011 08:00 pm
Por Roque
5 de clabLevel
Por DriverOp
Claber
2191 de clabLevel
Y como debo resolver lo de la consulta para mostrar cada transaccion y me vaya mostrando el balance que queda en cada transaccion.
Por Roque
5 de clabLevel
La tabla de transaccion deberia ser algo asi: transaction_id (PK) client_id(FK) transaction_type_id(FK) amount transaction_date balance donde client_id proviene de la tabla "clients" y transaction_type_id de la table "transaction_type". En esta tabla indicas si fue deposito o retiro. Si fuesen 2 tipos de transacciones solo usaria un tinyint, si hubieran mas tipos si usaria una tabla.
Por edge
56 de clabLevel
edge: Si amount tiene signo, no es necesario especificar si es retiro o depsito. Con hacer la suma algebraica ya est. Roque: Mi propuesta ira as. La tabla de transacciones sera: - Fecha - retiros - depsitos - saldo - descripcin (resto de los campos). Fecha es la fecha y hora de la transaccin, retiro, depsito y saldo son campos tipo float (o double o currency o lo que te parezca adecuado) y descripcin ser el campo donde poner la descripcin del movimiento en la cuenta. La clave est cuando haces la insercin de un registro nuevo. Primero tienes que leer el saldo del movimiento anterior. SELECT saldo FROM transacciones ORDER BY fecha DESC LIMIT 1; Eso lee el ltimo movimiento segn la fecha.
Por DriverOp
Claber
2191 de clabLevel
Para saber el saldo actual se aplica la frmula: saldo_actual = saldo_anterior + deposito - retiro Si es un deposito, retiro lo pones en cero, si es un retiro, al contrario. Luego s, haces el insert en la tabla. As, siempre que uses el SELECT de ms arriba siempre tendrs el saldo actual.
Citar Escrito el 23 May 2011 12:33 pm
Si es solo retiro o deposito, me parece genial. Sin embargo en la vida real hay mas alla de depositos y retiros. Aparte, a la hora de hacer un query seria bien ortodoxo a mi parecer el de traerte los negativos para ver si fueron retiros o positivos si fueron depositos, si puedes hacer el filtro con solo indicarle que tipo de transaccion se ejecuto.
Por edge
56 de clabLevel
Quise decir que no necesitas el tipo de transaccin para hacer el clculo del saldo o balance. Tal vez para otras cosas s, como bien dices.
Por DriverOp
Claber
2191 de clabLevel
Muchas gracias por el interes de ayudarme, quizas no me he explicado bien. yo tengo los siguientes campos en la tabla transaccion, ID,
Por Roque
5 de clabLevel
tipo_transaccion, referencia, deposito y retiro. pero yo quiero hacer una consulta que me vaya mostrando el balance al lado de cada transaccion. Por ejemplo:
Envale un mensaje privado
ID Tipo_Transaccion Referencia Deposito Retiro Balance 1 D Deposito 1,500.00 0 1,500.00 2 D Deposito 3,000.00 0 4,500.00 3 R Retiro 1,200.00 0 3,300.00 Aclaro, el campo balance no lo estoy almacenando, solo realizar el calculo. Gracias.
Citar Escrito el 25 May 2011 02:14 pm
Por DriverOp
Claber
2191 de clabLevel
Por edge
56 de clabLevel
Gracias por tu orientacion, ya encontre lo que necesitaba, tu repuesta iba por via que necesitaba para solucionar. Mil gracias. mysql> select id, tipo, referencia, deposito, retiro, (@sum:=@sum+deposito-retir o) as Total -> from transaccion -> join(select @sum:=0)y -> order by id; +----+------+------------+----------+--------+-------+ | id | tipo | referencia | deposito | retiro | Total | +----+------+------------+----------+--------+-------+ | 6 | D | DEPOSITO | 1500 | 0 | 1500 | | 7 | D | DEPOSITO | 3200 | 0 | 4700 | | 8 | R | RETIRO | 0 | 1650 | 3050 | | 9 | R | RETIRO | 0 | 1800 | 1250 | | 10 | D | DEPOSITO | 6400 | 0 | 7650 | +----+------+------------+----------+--------+-------+ 5 rows in set (0.05 sec Lo que queria hacer era esto.