Mysql
 sql >> база данни >  >> RDS >> Mysql

Заявката за суми на Mysql връща неправилен резултат при използване на множество обединявания

Използвайте сумите директно, защото вашите съединения вероятно създават повече редове в комбинация, която искате.

Опитайте следното:

SELECT id, MAX(Total) as FinalTotal ,MAX(Payment) as FinalPayment
FROM si_invoices a 
    left join 
    (select invoice_id, sum(total) as Total from si_invoice_items group by invoice_id) b 
    on a.id = b.invoice_id
    left join
    (select ac_inv_id, sum(payment) as Payment from si_payment group by ac_inv_id) c 
    on c.ac_inv_id = a.id 
group by id

или ако идентификаторът е уникален:

    SELECT *
FROM si_invoices a 
    left join 
    (select invoice_id, sum(total) as Total from si_invoice_items group by invoice_id) b 
    on a.id = b.invoice_id
    left join
    (select ac_inv_id, sum(payment) as Payment from si_payment group by ac_inv_id) c 
    on c.ac_inv_id = a.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. Доктрина 2 с множество индекси

  2. mysql - Как да се справяме с търсенето на заявка със специални знаци /(наклонена черта напред) и \(обратна наклонена черта)

  3. Има ли причина да не се използва <=> (null safe =оператор) в mysql вместо =?

  4. Как да получите процент от общия брой, когато заявката има GROUP BY?

  5. MySQL JOIN и COUNT в единична заявка