使用join汇总值,仅使用一次值

时间:2019-05-24 15:29:12

标签: mysql group-by sum

我有一个查询,我想在此汇总由客户分组的所有发票价格。在这种情况下,重要的是,发票位置必须至少链接到一个时间表。否则,我不想计算该发票位置。

结构如下:每个发票都链接到一个订单,每个订单都链接到一个客户,每个发票可能有一个到多个发票位置,每个发票位置可能有零到多个时间间隔。

如果一个发票位置有很多时间安排,我在总结价格时就会遇到问题。

举个简单的例子:有一个客户William,他有一张发票,其中一张发票的价格为199。该发票位置与5个时间安排相关联。因为我们只有一个发票位置,所以总和应为199。但是,使用此SQL语句,结果为995(将其乘以sptimeschedule条目的数量)。

怎么可能只返回199?在我看来,检查发票位置是否链接到检查的时间表很重要!

SELECT customer.id,
SUM(invoicepositions.price)
from invoices
inner join orders on invoices.order_id = orders.id
inner join customer on orders.customer_id = customer.id
inner join invoicepositions on invoices.id = invoicepositions.invoice_id
INNER join sptimeschedule on invoicepositions.id = sptimeschedule.invoiceposition_id 
Group by customer.id

0 个答案:

没有答案