独立した呼び出しではなく、内部結合で動作するように SQL を最適化または変更しようとしています。
データベース: 1 つの請求書に多数の支払記録と注文 (製品) 記録を含めることができます
オリジナル:
SELECT
InvoiceNum,
(SELECT SUM(Orders.Cost) FROM Orders WHERE Orders.Invoice = InvoiceNum and Orders.Returned <> 1 GROUP BY Orders.Invoice) as vat_only,
(SELECT SUM(Orders.Vat) FROM Orders WHERE Orders.Invoice = InvoiceNum and Orders.Returned <> 1 GROUP BY Orders.Invoice) as sales_prevat,
(SELECT SUM(pay.Amount) FROM Payments as pay WHERE Invoices.InvoiceNum = pay.InvoiceNum ) as income
FROM
Invoices
WHERE
InvoiceYear = currentyear
テーブルをグループ化して結合することで、これを別の方法で行うことができると確信しています。以下の SQL ステートメントを試したところ、同じ量 (カウント) のレコードが得られませんでした...結合の種類または結合場所に関して考えています!! しかし、画面を3時間見た後でも、まだ機能しませんでした..
これまでのところ...
SELECT
Invoices.InvoiceNum,
Sum(Orders.Cost) AS SumOfCost,
Sum(Orders.VAT) AS SumOfVAT,
SUM(distinct Payments.Amount) as money
FROM
Invoices
LEFT JOIN
Orders ON Orders.Invoice = Invoices.InvoiceNum
LEFT JOIN
Payments ON Invoices.InvoiceNum = Payments.InvoiceNum
WHERE
Invoices.InvoiceYear = 11
AND Orders.Returned <> 1
GROUP BY
Invoices.InvoiceNum
悪い英語で申し訳ありません。ここで既に回答されている場合、何を検索すればよいかわかりません:D
すべての助けを前もって感謝します