0

注文合計を計算する関数を書いています。私はこの情報を取得するための SQL を見ていますが、現在持っているように php でハックするのではありません。

各注文には、各アイテムの注文オファーがあります。通常、注文の修正があるため、1 つの注文オファーに複数のバージョンが存在する場合があります。最高のオファー バージョンは、価格の計算に使用するデータです。

ここで、個々の注文のすべての注文オファーを取得するために使用する SQL を次に示します。

SELECT * FROM order_offer offer 
WHERE offer.order_id = ?
AND offer.offer_version IN (SELECT MAX(offer_version) FROM order_offer WHERE offer_id =     
offer.offer_id)

ここで、同様の SQL を作成して、注文オファーごとにクーポンを取得する必要があります。各注文オファーには、複数のクーポンがある場合もあれば、まったくない場合もあります。

これは、クーポンを適用できる有効な注文オファーを見つけるために使用するSQLです(役立つ場合)

SELECT * FROM order_offer offer 
WHERE offer.order_id = ?
AND offer.offer_version IN (SELECT MAX(offer_version) FROM order_offer WHERE offer_id = 
offer.offer_id)
AND offer.offer_id NOT IN
(
SELECT o.offer_id
FROM order_offer o LEFT JOIN order_coupons c ON o.offer_id = c.offer_id 
WHERE o.offer_version = offer.offer_version
AND o.offer_version = c.offer_version
AND c.order_coupon_stackable = 0
AND o.order_id = offer.order_id
)

お手伝いありがとう!

4

1 に答える 1

1

これだけではできませんか (最後のオファーのクーポンが表示されます):

SELECT * FROM order_offer offer 
LEFT JOIN order_coupons c ON offer.offer_id = c.offer_id AND offer.offer_version = c.offer_version
WHERE offer.order_id = ?
AND offer.offer_version IN (SELECT MAX(offer_version) FROM order_offer WHERE offer_id =     
offer.offer_id)
于 2013-05-10T01:43:43.137 に答える