我正在尝试创建一个查询,该查询将从我正在创建的计费系统的四个表中获取信息。我有以下表格:
表发票
InvoiceID (PK)
ClientID
Date
Status
...
桌面客户端
ClientID (PK)
ClientName
...
表发票项目
ItemID (PK)
InvoiceID
Amount
...
餐桌付款
PaymentID (PK)
InvoiceID
Amount
...
我需要创建一个查询,可以在其中访问发票表中的信息以及客户名称以及与发票关联的所有发票项目和付款的总和。
我已经尝试过以下方法:
SELECT
Invoice.InvoiceID,
Invoice.`Date`,
Invoice.Terms,
Invoice.DateDue,
Invoice.Status,
Client.ClinicName,
SUM(InvoiceItem.Amount),
SUM(Payment.PaymentAmount)
FROM Invoice
JOIN (Client, InvoiceItem, Payment) ON
(Client.ClientID=Invoice.ClientID AND
InvoiceItem.InvoiceID=Invoice.InvoiceID AND
Payment.InvoiceID=Invoice.InvoiceID)
虽然这种方法有效,但它将 SUM() 乘以用于获得总和的记录数(即,如果有两次付款 - 800,400 - 它给我 (800+400)*2 - 2400)。我猜测我使用连接的方式有些问题,老实说,我从来没有对多个表使用过连接,而且我总是使用 GROUP BY,但我似乎无法让它正常工作。
更糟糕的是,过去几年我一直迷失在vb.net/MSSQL客户端编程的世界里,所以我的MySQL相当粗糙。