从两张桌子中获取价格

时间:2012-01-06 12:49:17

标签: mysql

我正在努力获得产品价格,但我有两张桌子(因为我有不同的价格控制)。这是我的架构:

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

1 个答案:

答案 0 :(得分: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());