2012-06-12 56 views
0

我坐在這個SELECT語句與MySQL輔助選擇

我有一個產品分成5種產品,每一個欄,告訴你應該有多少爲了得到它的那個價格。

我要的是,舉例來說,如果我命令54,我應該得到50

價格如果我訂購100或101等。我應該得到100的價格。 。 等等。

這裏是我的選擇,到目前爲止..

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

+4

也許你也可以解釋你的表的樣子 –

+2

歡迎來到StackOverflow。請儘量在寫作質量上付出一點努力。這是一個專業的網站。 –

回答

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(意思是您要購買6件id = 17的產品)和17 1 3.50,17 5 3.29,17 100 3.01item_id, quantity, base_price),您將獲得17 6 3.29

+0

試試看看這個:it-guiden.dk/downloads/SQL.png –

-1

您可能需要重新考慮你的表設計。您可能希望有一個mg_catalog_product_entity_tier_price表,其中列出了可以訂購以獲得該價格層級的最小和最大數量的項目。那麼這個陳述很簡單。

否則,這將涉及使用邏輯,如select max(prices.items_required) from prices where order_qty<items_required_for_tier。這將從訂單項數量小於實際訂單尺寸的價目表中找到最大的商品數量。

+1

我很抱歉,我的問題可能顯得嚴重描述.. 我無法上傳screeshot .. :( 我loooking到第一個答案的時候了。:) 我只是將屏幕截圖上傳到我自己的網絡服務器,因爲如果你看到SQL語句+結果,它會對你們所有人提供更多的信息 –

+0

你可能想評論一下原文,而不是我的回答。 在任何情況下,與base_quantity結合的'Limit 1'與使用max(base_quantity)相同。我仍然認爲對於任何實際的查詢來說這是一個壞主意,因爲如果它被部署了,它將在大型數據集上運行速度要比在表中存儲最大值和最小值項的速度慢得多。 –

+0

試試看看這個: http://it-guiden.dk/downloads/SQL.png –