我正在尝试创建一个查询,该查询将从我正在创建的计费系统的四个表中获取信息。我有以下表格:
表发票
InvoiceID (PK)
ClientID
Date
Status
...
表客户端
ClientID (PK)
ClientName
...
表发票项
ItemID (PK)
InvoiceID
Amount
...
餐桌付款
PaymentID (PK)
InvoiceID
Amount
...
我需要创建一个查询,我可以在其中访问 Invoice 表中的信息以及客户名称,以及与发票关联的所有发票项目和付款的总和。
我尝试了以下方法:
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 相当粗糙。