Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn SQL để tính số dư tài khoản

Về cơ bản, bạn đang tính toán sản phẩm chéo giữa các tdebitstcredits , tức là cho mỗi hàng trong tdebits bạn đang lặp lại tất cả các hàng trong tcredits . Cũng không có lý do gì để tham gia vào tài khoản accounts (trừ khi to_account_idfrom_account_id không phải là khóa ngoại).

Bạn chỉ cần thực hiện một lần chuyển qua các giao dịch và bạn chỉ cần biết số tiền đó là tín dụng hay ghi nợ.

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

Nếu tài khoản có thể tự chuyển sang tài khoản, hãy thêm t.to_account_id <> t.from_account_id .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (Các) đặc quyền SUPER cho hoạt động này

  2. CodeIgniter chuyển trình điều khiển từ mysql -> mysqli

  3. Truy vấn chọn SQL sử dụng các phép nối, nhóm theo và các hàm tổng hợp

  4. Quy trình đã lưu trữ Tự động xóa các hàng cũ hơn 7 ngày trong MYSQL

  5. Tại sao TRANSACTION / COMMIT lại cải thiện hiệu suất rất nhiều với PHP / MySQL (InnoDB)?