2010-09-28 18 views
6

Ho una tabella contenente le tariffe di spedizione e pesi massimi, ad esempio:MySQL selezionare valore più vicino

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

voglio essere in grado di ottenere il tasso di trasporto in base al peso dell'ordine, in cui il peso è inferiore di max_weight nella tabella. Quindi, se il peso è 410, il costo di spedizione sarà 5,00, se il peso è 2000 la spedizione è 12,50 e così via.

L'utilizzo di max_weight >= '" . $weight . "' non funziona poiché restituisce solo il primo max_weight che è superiore al peso, ad esempio un peso di 683 restituisce 12,50 come costo di spedizione.

Come faccio ad accertarmi che venga visualizzato il valore corretto max_weight?

risposta

19

Basta usare ORDER BY e LIMIT abilmente.

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

Non riesco a credere che l'uso dell'ordine non mi abbia nemmeno sfiorato la mente: | Grazie! – Dan