Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
ВнизНеправильно рассчитываюся выражения в SQL Найти похожие ветки
← →
Delphi basic © (2006-09-01 10:29) [0]В Firebird выполняю следующий запрос:
select (ts.moto_hour * c.fuel_norm_moto), c.fuel_norm_moto, ts.moto_hour
from travel_sheet ts, car c, subdivision s
where ts.car = c.ui and
ts.subdivision = s.ui and
extract(month from ts.work_date) = 7 and
extract(year from ts.work_date) = 2006 and
s.code = "СМИТ" and
ts.state = 1
результаты:
150 20 7,5
75 20 3,8
60 6 6
60 20 3
почему выражение (1-й столбец) неправильно считается?
Чего-то я не понимаю :(
← →
Ega23 © (2006-09-01 10:32) [1]Такие вещи обычно реализуются добавлением калькулируемого поля в TDataSet на клиенте.
← →
Delphi basic © (2006-09-01 10:34) [2]Почему же здесь неправильно считает?
← →
Delphi basic © (2006-09-01 10:37) [3]Поправлю результаты для большей удобочитаемости:
150 20 7,5
75 20 3,8
60 6 6
60 20 3
Почему первый столбец не всегда равен произведению второго и третьего?
Например здесь это справедливо для 2 и 3 строк
← →
Desdechado © (2006-09-01 11:14) [4]Вторая строка легко объяснима - потеря точности при расчетах и хранении данных в полях с плавающей точкой. Типы полей приведи.
Третья - странно.
← →
Ega23 © (2006-09-01 11:19) [5]Да, третья - очень странно...
← →
Delphi basic © (2006-09-01 11:20) [6]В конференции БАЗЫ ветка с тем же названием - там привел
← →
Desdechado © (2006-09-01 11:23) [7]http://delphimaster.net/view/3-1157093965/
ЗЫ это неуважение - часть данных кидать в одну ветку, часть - в другую
← →
Delphi basic © (2006-09-01 11:24) [8]Сорри, больше не буду :)
← →
Ega23 © (2006-09-01 11:26) [9]Да вроде должно нормально перемножить....
Очень странно...
← →
Delphi basic © (2006-09-01 11:28) [10]Угу, у меня вот ощущение, что калькулятор взбесился...
Пойду сервак рестартну, пока юзеры обедают... на всякий случай...
← →
Delphi basic © (2006-09-01 11:36) [11]Вот так считает правильно:
select (cast(ts.moto_hour as numeric(10, 1)) * cast(c.fuel_norm_moto as numeric(10, 1))), c.fuel_norm_moto, ts.moto_hour,
ts.UI, ts.car
from travel_sheet ts, car c, subdivision s
where ts.car = c.ui and
ts.subdivision = s.ui and
extract(month from ts.work_date) = 7 and
extract(year from ts.work_date) = 2006 and
s.code = "СМИТ" and
ts.state = 1
Это что ж, получается, придется обязательно к одному типу приводить, чтобы получить корректный результат?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.062 c