我正在努力获得产品价格,但我有两张桌子(因为我有不同的价格控制)。这是我的架构:
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_from
和disponible_to
E.g。如果我的产品有disponible = 100
,并且我的价格为disponible_from is 200
,那么它不应该从价格表中获得价格,而是从产品表中获取。如果disponible_from
为50,产品为100,则应该从价格表中获取价格。
2)如果价格表中没有匹配,则应从产品表中获取价格。如果产品表中的价格未填写,则应返回msrp
答案 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());