You are on page 1of 5

Saludos, Estoy desarrollando un sistema que, por ejemplo, contiene una tabla llamada transacciones, en la cual se registraran los

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

Envale un mensaje privado

Una sola tabla es lo adecuado.

Por DriverOp
Claber

2191 de clabLevel

Envale un mensaje privado Web

Citar Escrito el 23 May 2011 02:49 am

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

Envale un mensaje privado

Citar Escrito el 23 May 2011 10:08 am

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

Envale un mensaje privado

Software developer @rubinhozzz

Citar Escrito el 23 May 2011 12:29 pm

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

Envale un mensaje privado Web

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

Envale un mensaje privado

Software developer @rubinhozzz

Citar Escrito el 23 May 2011 01:06 pm

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

Envale un mensaje privado Web

Citar Escrito el 24 May 2011 11:51 pm

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

Pues realizando el clculo, cmo ms?... No entiendo tu pregunta.

Por DriverOp
Claber

2191 de clabLevel

Envale un mensaje privado Web

Citar Escrito el 25 May 2011 02:47 pm

Busca en google "Cumulative sum" o "Cumulative total".

Por edge
56 de clabLevel

Envale un mensaje privado

Software developer @rubinhozzz

Citar Escrito el 26 May 2011 12:44 am

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.

You might also like