मुझे कई बार इस तरह के सवालों का सामना करना पड़ता है। एकाधिक जुड़ने के कारण, किसी विशेष तालिका के मान डुप्लिकेट, तीन प्रतियों आदि हो जाते हैं। इसे ठीक करने के लिए, मैं आम तौर पर योग को विभाजित करके एक छोटी सी हैक करता हूं (विशेष तालिका पर) ) अन्य . से भिन्न Id(Ids) की गणना द्वारा मेज़। यह कई डुप्लीकेट होने के प्रभाव को नकारता है।
निम्न क्वेरी का प्रयास करें:
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