假设我有一个包含字段regular_price
和sale_price
的产品表,我想按当前价格对这些产品进行排序,您会怎么做?
解决方案是检查&根据每次加载产品时price
是否有值,更新新字段sale_price
。但这感觉非常麻烦。如果我能提供帮助,我真的不想复制数据。
谢谢!
编辑:为了增加额外的复杂性,我还需要能够将这个php语句转换为查询:
if ( $this->sale_price_dates_from <= $time &&
$this->sale_price_dates_to >= $time &&
$this->sale_price)
return true;
EDIT2:$time
是指当前的unix时间戳。
我的表结构是:
meta_id
,post_id
,meta_key
,meta_value
所有字段sale_price
,regular_price
..日期等都存储在meta_key
中,其中包含meta_value
中的相应值。
所有日期都存储为unix时间戳
答案 0 :(得分:2)
ORDER BY IFNULL(sale_price, regular_price)
修改强> 您对查询的php语句如下所示:
WHERE (meta_key = 'sale_price_dates_from' AND meta_value <= NOW())
AND (meta_key = 'sale_price_dates_to' AND meta_value >= NOW())
AND (meta_key = 'sale_price' AND meta_value IS NOT NULL)
AND meta_id = ?