2012-01-06 62 views
0

我試圖獲得產品價格,但是我將它放在兩個表格中(因爲我有不同的價格控制)。這裏是我的架構:從兩個表中獲取價格

Product table: 
- SKU 
- msrp 
- price 
- disponible 

Price table: 
- SKU 
- price 
- disponible_from 
- disponible_to 
- period_from 
- period_to 
- priority 

我想要它做什麼:

1)價格表(order by priority DESC首先檢查)。例如。檢查period_from是否更大,period_from是否小於當前日期。同時檢查產品與該SKU的分辨率是否大於和小於disponible_fromdisponible_to

E.g.如果我有一個產品disponible = 100,我有一個價格disponible_from is 200,它不應該從價格表中得到價格,但從產品表中獲得。如果disponible_from是50,產品分銷100,它應該從價格表中得到價格。

2)如果價格表中沒有匹配,它應該從產品表中獲得價格。如果產品表中的價格未填充,則應返回msrp

回答

0
select ifnull(price.price, ifnull(product.price, product.msrp)) 
from price 
join product on price.sku = product.sku 
    and (product.disponible > ifnull(price.disponible_from, "1970-01-01") 
     and product.disponible < ifnull(price.disponible_to, curdate())) 
where (price.periodfrom < curdate() and price.periodto > curdate()); 
+0

感謝您的編輯。我的入場是一團糟。 – ethrbunny 2012-01-06 14:00:52

+0

我在代碼中'開'附近出現錯誤。此外,這個期望periodfrom和periodto被填充 - 但它們可以是空的。有時它們被填滿,有時是空的。你能修好它嗎?編輯了 – Elias 2012-01-09 09:11:27

+0

。如果periodfrom /爲空 - 它們默認的是什麼? – ethrbunny 2012-01-09 15:07:36