2010-09-28 7 views
6

J'ai une table contenant des taux d'expédition et de poids maximum, par exemple:MySQL sélectionner la valeur la plus proche

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

Je veux être en mesure d'obtenir le taux d'expédition en fonction du poids de l'ordre, où le poids est inférieur que max_weight dans le tableau. Donc, si le poids est de 410, le coût d'expédition serait de 5,00, si le poids est de 2000 l'expédition est de 12,50 et ainsi de suite. L'utilisation de max_weight >= '" . $weight . "' ne fonctionne pas car elle renvoie juste la première max_weight qui est plus que le poids, par exemple un poids de 683 renvoie 12.50 comme coût d'expédition.

Comment puis-je vous assurer qu'il obtient le max_weight correct?

Répondre

19

Il suffit d'utiliser ORDER BY et LIMIT intelligemment.

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

Je ne peux pas croire à l'aide pour en n'a même pas traversé l'esprit: | Merci! – Dan

Questions connexes