2010-09-28 20 views
6

Tengo una tabla que contiene las tarifas de transporte y pesos máximos, por ejemplo:MySQL seleccionar el valor más cercano

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

Quiero ser capaz de obtener la tarifa de envío basado en el peso de la orden, donde el peso es menor que max_weight en la tabla. Entonces, si el peso es 410, el costo de envío sería 5.00, si el peso es 2000, el envío es 12.50 y así sucesivamente.

El uso de max_weight >= '" . $weight . "' no funciona, ya que solo devuelve el primer max_weight que es más que el peso, por ejemplo, un peso de 683 devuelve 12.50 como el costo de envío.

¿Cómo me aseguro de que sea el correcto max_weight?

Respuesta

19

Solo use ORDER BY y LIMIT hábilmente.

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

No puedo creer usando el orden por ni siquiera se me pasó por la cabeza: | ¡Gracias! – Dan

Cuestiones relacionadas