按价格对产品进行排序

时间:2012-01-23 04:30:42

标签: php mysql

假设我有一个包含字段regular_pricesale_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_idpost_idmeta_keymeta_value

所有字段sale_priceregular_price ..日期等都存储在meta_key中,其中包含meta_value中的相应值。

所有日期都存储为unix时间戳

1 个答案:

答案 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 = ?