协助MySQL SELECT

时间:2012-06-12 18:23:42

标签: mysql

我正坐在这个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;

编辑:以下是回复评论中提到的屏幕截图: Screenshot of Statement and output

2 个答案:

答案 0 :(得分: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.5017 5 3.2917 100 3.01item_id, quantity, base_price)您将获得{ {1}}结果。

答案 1 :(得分:-1)

您可能需要重新考虑您的桌面设计。您可能希望有一个mg_catalog_product_entity_tier_price表,其中列出了可以订购以获得该价格等级的最小和最大数量的项目。然后声明很简单。

否则,这将涉及使用select max(prices.items_required) from prices where order_qty<items_required_for_tier之类的逻辑。这将从价目表中找到订购商品数量小于实际订单数量的最大商品数量。