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

Wybierz Sumę z dwóch połączonych tabel

Czasami spotykam się z tego rodzaju pytaniami. Z powodu wielu sprzężeń wartości z określonej tabeli są duplikowane, potrojone itp. Aby to naprawić, zwykle robię mały hack, dzieląc sumę (na konkretnej tabeli ) przez liczbę odrębnych identyfikatorów od innych stół. To neguje efekt wielu duplikatów.

Wypróbuj następujące zapytanie:

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. Nie można załadować żądanej klasy:com.mysql.jdbc.Driver na JBoss przy użyciu Hibernate

  2. Jak zaimportować do MySQL ogromny plik CSV z 200,00 wierszami (asynchronicznie i szybko)?

  3. Jak zgłosić błąd w funkcji MySQL

  4. Pokaż wszystkie daty między, nawet jeśli nie ma wyników

  5. Konwertuj datę 41014 Excela na rzeczywistą datę w PHP lub JavaScript