次の 2 つのテーブルがあります。
* ORDER
- id
- pay_type
* ORDER_PRICE
- order_id
- dt
- price
注文価格は次のように変更できます。
order_id | price | dt
1 | 100.3 | 2013-10-25
1 | 105.7 | 2013-10-28
2 | 207.4 | 2013-09-13
4 | 98.0 | 2013-10-03
そのような日付の価格履歴を選択できます。
SELECT
o.`id`,
(SELECT op.`price` FROM `order_price` op
WHERE op.`order_id`=o.`id` AND op.`dt` <= '2013-10-26'
ORDER BY op.`dt` DESC LIMIT 1) order_price
FROM `order` o
指定された日付の適切な価格が表示されます
order_id | price | dt
1 | 100.3 | 2013-10-25
2 | 207.4 | 2013-09-13
4 | 98.0 | 2013-10-03
しかし、2番目の列の合計が必要です(注文番号に関係なく、1つの番号のみ-この場合は405.7)。
このような状況の解決策はありますか?何千もの注文がある可能性があるため、mysql の外でレコードを合計するのは間違っていると思います。多分それは最初からずっと間違っていて、他の構造が必要ですか?お時間をいただき、ありがとうございました。