我有一个查询,我想在此汇总由客户分组的所有发票价格。在这种情况下,重要的是,发票位置必须至少链接到一个时间表。否则,我不想计算该发票位置。
结构如下:每个发票都链接到一个订单,每个订单都链接到一个客户,每个发票可能有一个到多个发票位置,每个发票位置可能有零到多个时间间隔。
如果一个发票位置有很多时间安排,我在总结价格时就会遇到问题。
举个简单的例子:有一个客户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