Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.037 c
3-1153900271
miammiam
2006-07-26 11:51
2006.09.24
Нужно перенести данные из одной DBF в другую DBF таблицу


15-1157019915
Idiot
2006-08-31 14:25
2006.09.24
Есть ли что то на подобе процедуры VAL в БД ....


15-1157536144
Андрей Пазик
2006-09-06 13:49
2006.09.24
Когда будет rss на сайте?


1-1155388106
apic
2006-08-12 17:08
2006.09.24
TListView


2-1157571270
redlord
2006-09-06 23:34
2006.09.24
моргание Timage при refresh





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский