0

我坐在这个 SELECT 语句中

我将一种产品分成 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

这里的 orders 是你的订单表,它有 item_id 和数量。价格是一个静态表,其中包含该数量的 item_id、数量和每件商品的基本价格。因此,如果您有 17 6订单(意味着您要购买 6 个 id=17 的商品)并且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 回答