sql >> Base de Datos >  >> RDS >> Mysql

Consulta SQL para calcular el saldo de la cuenta

Básicamente, está calculando el producto cruzado entre un tdebits y tcredits , es decir, para cada fila en tdebits está iterando sobre todas las filas en tcredits . Tampoco hay razón para unirse a accounts (a menos que to_account_id y from_account_id no son claves foráneas).

Solo necesita hacer un pase sobre las transacciones y solo necesita saber si el monto es crédito o débito.

SELECT SUM(CASE WHEN t.to_account_id = $1 THEN t.amount ELSE -t.amount END) AS amount
FROM transactions AS t
WHERE (t.to_account_id = $1 OR t.from_account_id = $1)
  AND t.succeed = true

Si una cuenta puede transferirse a sí misma, agregue un t.to_account_id <> t.from_account_id .