Ranges query gone wild

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi.

I have a MySQL table where a product price ranges are set according to
quantities.
For instance for a certain product you'd have (besides id columns):

range_begin |   range_end  |      range_price
    0             |      35           |           1.5
    36           |      70           |           2
    71           |      -              |           3

Where '-' is always the character that means '..and above' and closes the
entire range field. So in the above example a quantity of 71 and above has a
price tag - $3.

I have limited success with writing the simple query that when given a
quantity returns its correct price range. This is what I came up with:

SELECT `range_price` FROM `price_ranges` WHERE `product_id` = '$product_id'
&& `size_id` = '$size_id' && ((`range_begin` <= '$quantity' && `range_end` =
'-') || (`range_begin` <= '$quantity' && `range_end` >= '$quantity'));

It partially works. But given the above example, it'll correctly return for
a quantity of 71-79 the price of 3, but for anything above that it'll return
the wrong price - 1.5. It works fine if I remove the second part of the OR
construct.
Also it returns nothing for the quantities of 4-9 (?!).

I've tested this on my machine (MySQL ver: 3.23.54) and on the customer's
server
(ver: 4.0.14), and got the same results. Obviously I'm not getting the
logical scheme right. If anyone can point out the problem or suggest a
better way to write the query I'd appreciate it.

Thank you, Boaz Amit

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux