Mysql 从两张桌子上取价格

Mysql 从两张桌子上取价格,mysql,Mysql,我试图得到产品的价格,但我有两个表(因为我有不同的价格控制)。以下是我的模式: Product table: - SKU - msrp - price - disponible Price table: - SKU - price - disponible_from - disponible_to - period_from - period_to - priority 我希望它做什么: 1) 第一次签入价格表(按优先级排序说明)。例如,检查来自的period\u是否大于当前日期,以及来

我试图得到产品的价格,但我有两个表(因为我有不同的价格控制)。以下是我的模式:

Product table:
- SKU 
- msrp 
- price
- disponible

Price table:
- SKU
- price
- disponible_from
- disponible_to
- period_from
- period_to
- priority
我希望它做什么:

1) 第一次签入价格表(
按优先级排序说明
)。例如,检查来自的
period\u是否大于当前日期,以及来自
period\u是否小于当前日期。还应检查带有该SKU的产品的可分派值是否大于或小于从
到的可分派值

例如,如果我有一个
disponible=100
的产品,并且我的价格
disponible\u from是200
,它不应该从价格表中获取价格,而是从产品表中获取价格。如果中的
可分派\u为50,而产品可分派为100,则应从价格表中获取价格

2) 如果价格表中没有匹配项,则应从产品表中获取价格。如果未填写产品表中的价格,则应返回msrp
选择ifnull(price.price,ifnull(product.price,product.msrp))
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());
从价格 按price.sku=product.sku加入产品 和(product.disponible>ifnull(price.disponible_从“1970-01-01”开始) 和product.disponiblecurdate());
我在代码中的“on”附近遇到一个错误。此外,这一个期望periodfrom和periodto被填充,但它们可以是空的。有时是满的,有时是空的。你能修好吗?编辑好了。如果periodfrom/to为空-它们默认为什么?那么它们就是空的。我的问题是,如果我希望价格从2012-02-01开始生效,那么我只填写periodfrom,然后它应该从该日期起生效。而且,如果只有periodto被填充,那么它应该只在该日期之前得到它。同样的事情也有争议。例如,如果仅填写了可争议的发件人或仅填写了可争议的收件人。你明白了吗?抱歉,伙计们,我没法让它工作。看起来它希望disposible_和disposible_被填充,但情况并非总是如此。与句点_from和to一样,可争议的_from和to可以为空。请参阅此粘贴箱: