2010-09-28 21 views
6

Mam tabelę zawierającą stawki wysyłki i maksymalne ciężary, np:MySQL wybrać najbliższą wartość

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

Chcę być w stanie uzyskać szybkość wysyłki na podstawie wagi zamówienia, w przypadku gdy masa jest mniejsza niż max_weight w tabeli. Więc jeśli waga wynosi 410, koszt wysyłki będzie 5,00, jeśli waga to 2000, wysyłka wynosi 12,50 i tak dalej.

Używanie nie działa, ponieważ po prostu zwraca pierwszą wartość max_weight, która jest większa niż waga, np. Waga 683 zwraca 12,50 jako koszt wysyłki.

Jak mogę się upewnić, że uzyska on poprawną nazwę max_weight?

Odpowiedz

19

Po prostu użyj sprytnie ORDER BY i LIMIT.

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

Nie mogę uwierzyć, że używanie zamówienia przez nawet nie przyszło mi do głowy: | Dzięki! – Dan