2014-01-10 72 views
0

我有一个表products与价格和销售列(浮动8,2)。 没有销售价格的产品将具有如下所示的值。 price 13.20 sale 0.00mysql价格范围有或在范围内

而作为产品的销售价格: price 10.00 sale 08.00

我试图让所有的产品,其中price为$ min和$最大或sale之间为$分钟之间和$最大。

select * from `products` where  

((price BETWEEN 0.00 AND 22.00)OR(sale BETWEEN 0.00与22.00))
status = 1和sold = 0和deleted = 0 ORDER BY id DESC LIMIT 12

但这不管用?任何人都可以帮我解决这个问题吗?提前致谢。

确定我测试这一个 -

select * from `products` where  

((price BETWEEN 0.00 AND 22.00)OR(sale BETWEEN 0.00与22.00))
status = 1和sold = 0和deleted = 0为了通过id降序极限12

问题我发现它的工作原理如果最低价格是例如0.01,但如果最低价格是0.00我得到没有价格限制的产品。为什么查询讨厌0.00分钟的价格? OO

回答

0

我认为,你忘了substatements之间括号或:

select * from `products` 
where (
    (`price` >= $min AND `price` <= $max) OR (`sale` >= $min AND `sale` <= $max) 
) and `status` = 1 and `sold` = 0 and `deleted` = 0 order by `id` desc limit 12 
0

你可以试试这个,新增BETWEEN min AND max

select * from `products` where  
    ((`price` BETWEEN $min AND $max) OR (`sale` BETWEEN $min AND $max))  
    and `status` = 1 and `sold` = 0 and `deleted` = 0 order by `id` desc limit 12 
0

您可以使用BETWEEN

select * from `products` where (price BETWEEN $min AND $max) OR `sale` >= $min AND `sale` <= $max) and `status` = 1 and `sold` = 0 and `deleted` = 0 order by `id` desc limit 12