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

Chọn Tổng từ hai bảng đã kết hợp

Tôi phải đối mặt với loại truy vấn này đôi khi. Do nhiều phép nối, các giá trị từ một bảng cụ thể bị trùng lặp, gấp ba lần, v.v. Để khắc phục điều này, tôi thường thực hiện một hack nhỏ bằng cách chia tổng (trên một bảng cụ thể ) bằng số lượng (các) Id khác biệt với khác bàn. Điều này phủ nhận tác động của nhiều lần trùng lặp xảy ra.

Hãy thử truy vấn sau:

select i.id, 
       (sum(pr.amount * pr.quantity) / IF(count(distinct pm.id) > 0, count(distinct pm.id), 1) as productAmount, 
       (sum(pm.amount) / IF(count(distinct pr.id) > 0, count(distinct pr.id), 1) as paymentAmount
from invoices as i
left join products as pr on pr.invoice_id=i.id
left join payments as pm on pm.invoice_id=i.id
group by i.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. Kubernetes không sao chép dữ liệu vào Ổ đĩa được gắn

  2. Cách lưu trữ các giá trị FLOAT bị thiếu với NULL trong SQL

  3. AttributeError:Đối tượng 'tuple' không có thuộc tính 'encode' - MySQLdb Python

  4. Tôi muốn cập nhật giá trị của nút radio trong cơ sở dữ liệu (mysql) bằng php

  5. Tôi có thể thực hiện Chọn, Cập nhật và Xóa mysql trong một truy vấn không?