作成している課金システムの4つのテーブルから情報を取得するクエリを作成しようとしています。私は次のテーブルを持っています:
テーブル請求書
InvoiceID (PK)
ClientID
Date
Status
...
テーブルクライアント
ClientID (PK)
ClientName
...
テーブルInvoiceItem
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()に、合計を取得するために使用されるレコードの数を掛けます(つまり、2回の支払いがある場合-800,400-(800 + 400)* 2--2400になります)。結合の使用方法に何かがあると思います。正直なところ、複数のテーブルに結合を使用する必要はなく、常にGROUP BYを使用しますが、それを正しく機能させることができないようです。 。
さらに悪いことに、私は過去数年間、vb.net / MSSQLクライアントサイドプログラミングの世界に迷い込んでいるので、私のMySQLはかなり荒いです。