1

2つのテーブルがあります。1つはInvoiceHeaderで、もう1つはInvoiceDetailsです。InvoiceHeaderにtotalというフィールドがあり、InvoiceDetailsテーブルからそのInvoiceIDに関連付けられているすべてのコストを計算します。

これを行うための最も簡単な方法は何ですか?

私はAccessにも取り組んでいます。ご不明な点がございましたらお問い合わせください。

4

1 に答える 1

0

コスト値がで指定された数値フィールドに格納され、両方のテーブルの数値フィールドでもあるcostInvoiceDetails仮定します...InvoiceID

SELECT
    ih.*,
    DSum("cost", "InvoiceDetails", "InvoiceID = " & ih.InvoiceID)
        As total_cost
FROM InvoiceHeader AS ih;

または、集計クエリを使用してそれぞれの合計を計算し、InvoiceIDそれをに結合することもできInvoiceHeaderます。

SELECT ih.*, sub.total_cost
FROM
    InvoiceHeader AS ih
    INNER JOIN
    (
        SELECT InvoiceID, Sum(cost) AS total_cost
        FROM InvoiceDetails
        GROUP BY InvoiceID
    ) AS sub
    ON ih.InvoiceID = sub.InvoiceID;

テーブルがこれら2つのアプローチの速度の違いに気付くのに十分な大きさである場合、2番目のアプローチの方が速いと思います。どちらを選択しても、のインデックスから大きなメリットが得られますInvoiceDetails.InvoiceID

于 2013-03-06T20:35:38.513 に答える