2010-09-28 42 views
6

Tôi có một bảng chứa giá vận chuyển và trọng lượng tối đa, ví dụ:MySQL chọn giá trị gần nhất

max_weight  shipping_cost 
100   1.50 
250   3.00 
500   5.00 
1000   8.50 
30000   12.50 

Tôi muốn để có thể có được mức giá vận chuyển dựa trên trọng lượng của trật tự, nơi mà trọng lượng ít hơn max_weight trong bảng. Vì vậy, nếu trọng lượng là 410, chi phí vận chuyển sẽ là 5.00, nếu trọng lượng là 2000 vận chuyển là 12,50 và như vậy.

Sử dụng max_weight >= '" . $weight . "' không hoạt động vì nó chỉ trả về max_weight đầu tiên lớn hơn trọng lượng, ví dụ: trọng lượng 683 trả về 12,50 làm chi phí giao hàng.

Làm cách nào để đảm bảo rằng nó nhận đúng max_weight?

Trả lời

19

Chỉ cần sử dụng ORDER BYLIMIT một cách khéo léo.

WHERE weight < max_weight 
ORDER BY max_weight ASC 
    LIMIT 1 
+0

Tôi không thể tin rằng việc sử dụng đơn đặt hàng thậm chí không vượt qua được suy nghĩ của mình: | Cảm ơn! – Dan

Các vấn đề liên quan