Forum Webscript.Ru

Общие => Базы данных => Тема начата: alex007 от 06 Августа 2004, 01:33:51

Название: Запрос
Отправлено: alex007 от 06 Августа 2004, 01:33:51
Привет,

Есть таблица:
-------------------------------------------------
| rateid | courierid | weight | cost |
-------------------------------------------------
|    1    |      1      |   100   | 1.15 |
-------------------------------------------------
|    2    |      1      |   120   | 1.35 |
-------------------------------------------------
|    3    |      1      |   140   | 1.85 |
-------------------------------------------------
|    4    |      1      |   160   | 2.05 |
-------------------------------------------------
|    5    |      1      |   180   | 2.45 |
-------------------------------------------------

Так проблема заключается в том что не могу создать заброс, а именно когда вес груза 132, то как сделать так что бы выбрать следуюющее значение 140.

Жду Ответа.
Заранее большой рахмет.
Название: Запрос
Отправлено: commander от 06 Августа 2004, 10:20:15
alex007
приложением сделать округление...
Название: Запрос
Отправлено: tserbis от 06 Августа 2004, 10:23:16
select min(weight-132) from t where weight > 132; /* даст 8 */
select * from t where abs(weight-132 - 8) < 1;
Название: Запрос
Отправлено: alex007 от 06 Августа 2004, 21:08:13
commander
tserbis
Спасибо.
Название: Запрос
Отправлено: alex007 от 06 Августа 2004, 22:56:58
tserbis
да забыл написать, что используя твою формулу, груз который весит 100, система будет выберать 120, хотя в таблице уже есть 100...
Название: Запрос
Отправлено: ThE0ReTiC от 07 Августа 2004, 12:11:06
alex007
>=
Название: Запрос
Отправлено: alex007 от 07 Августа 2004, 21:14:03
ThE0ReTiC
Это я так и сделал, но здесь еще одна фигня есть, тоесть помимо первого курьера, там еще пару у которого таблица тарифов типа:

-------------------------------------------------
| rateid | courierid | weight | cost |
-------------------------------------------------
|    6    |      2     |   100    | 6.95 |
-------------------------------------------------
|    7    |      2      |   500   | 7.65 |
-------------------------------------------------
|    8    |      2      |   1000 | 9.85 |
-------------------------------------------------
|    9    |      2      |   2000 | 12.30|
-------------------------------------------------

Пример перечисленный выше работает нормально, но как груз весит 600 гр. так он теряется и выдает сумму 0.
Название: Запрос
Отправлено: Гость от 20 Августа 2004, 18:44:12
select * from t where weight>=132 order by weight limit 0,1;
вот так одним запросом
Название: Запрос
Отправлено: alex007 от 26 Августа 2004, 23:33:38
Гость
спасибо, но я уже давно нашел решение...

[OFF]так что темку прикрыть можно[/OFF]