0

私はこのSELECTステートメントに座っています

1つの製品を5つの製品に分け、それぞれにその価格で購入するために注文する必要がある数を示す列があります。

たとえば、54を注文する場合、50から価格を取得する必要があります。

100や101などを注文する場合は、100から価格を取得する必要があります。

これが私のこれまでのSELECTです..

SELECT  
entity.entity_id AS "ID",
entity.value AS "Name",
qty_price.qty AS "Pcs",
qty_price.value AS "Price"
FROM `mg_catalog_product_entity_tier_price` qty_price 
JOIN `mg_catalog_product_entity_varchar` entity 
ON qty_price.entity_id = entity.entity_id 
WHERE entity.entity_id = 300 
AND entity.value = (SELECT name FROM `mg_catalog_product_flat_1` WHERE `mg_catalog_product_flat_1`.entity_id  = entity.entity_id)
LIMIT 10;

編集:これは、返信へのコメントで言及されたスクリーンショットです: ステートメントと出力のスクリーンショット

4

2 に答える 2

1

おそらく次のようなものが必要です(注、正確なテーブルについては言及していません):

SELECT 
    item_id, 
    item_quantity, 
    (
        SELECT base_price 
        FROM prices p 
        WHERE 
            o.item_id = p.item_id AND 
            o.item_quantity >= p.base_quantity 
        ORDER BY p.base_quantity
        LIMIT 1
    ) FROM orders o

ここで、注文は注文のテーブルであり、item_id と数量があります。価格は、item_id、数量、およびその数量でのアイテムごとの基本価格を含む静的テーブルです。したがって 17 6、注文がある場合 (id=17 のアイテムを 6 つ購入することを意味します) と17 1 3.50, 17 5 3.29, 17 100 3.01( item_id, quantity, base_price) が17 6 3.29結果として得られます。

于 2012-06-12T18:42:49.497 に答える
-1

テーブルのデザインを再考する必要があるかもしれません。mg_catalog_product_entity_tier_priceその価格帯を取得するために注文できるアイテムの最小数と最大数の両方をリストした テーブルが必要になる場合があります。次に、ステートメントは単純です。

それ以外の場合、これにはのようなロジックの使用が含まれselect max(prices.items_required) from prices where order_qty<items_required_for_tierます。これにより、注文されたアイテムの数が実際の注文サイズよりも少ない価格表から最大のアイテム数量が見つかります。

于 2012-06-12T18:37:44.780 に答える