Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie Mysql sum zwraca niepoprawny wynik przy użyciu wielu złączeń

Użyj sum bezpośrednio, ponieważ twoje połączenia prawdopodobnie tworzą więcej rzędów w kombinacji, które chcesz.

Wypróbuj następujące:

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

lub jeśli identyfikator jest unikalny:

    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. Wykresy wieloliniowe Highchart

  2. Zaktualizuj tabelę mysql danymi z innej tabeli

  3. Błąd PHP (MySQL):Ostrzeżenie:mysql_num_rows() oczekuje, że parametr 1 będzie zasobem

  4. Zapytanie MySQL zwraca zduplikowane wiersze

  5. Pobierz nadrzędny MySQL nadrzędny