Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 05:33 28.05.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема Странен mySQLнови  
Автор нeщacтeн (gan.hit.bg)
Публикувано10.10.03 18:34



Имам структура на таблица Invoice с полета
Total decimal(9,2) не 0.00
Paid decimal(9,2) не 0.00
Refund decimal(9,2) не 0.00

И няколко реда като този:
Total, Paid, Refund
23.50, 13.50, 10.00

Ето го странното:
SELECT Total, Paid, Refund, Total-Paid-Refund AS Debt
FROM Invoice
WHERE Total-Paid-Refund > 0

Вади и горния ред независимо, че
23.50 - 13.50 - 10.00 = 0

Някой да се сеща защо по дяволите???

- шантаво като теб ;)

Тема Re: Странен mySQLнови [re: нeщacтeн]  
Автор ro6avia (ламерясал)
Публикувано10.10.03 21:09



По мое мнение пробвай
SELECT Total, Paid, Refund, Total-Paid-Refund AS Debt
FROM Invoice
WHERE Debt > 0
или
HAVING Debt >0

E tuk ni6to niama :



Тема Re: Странен mySQLнови [re: нeщacтeн]  
Автор salle (един такъв)
Публикувано11.10.03 10:38



mysql> create table t (Total decimal(9,2), Paid decimal(9,2), Refund decimal(9,2));
Query OK, 0 rows affected (0.15 sec)

mysql> insert into t values(23.50, 13.50, 10.00);
Query OK, 1 row affected (0.07 sec)

mysql> select Total-Paid-Refund from t;
+-------------------+
| Total-Paid-Refund |
+-------------------+
| 0.00 |
+-------------------+
1 row in set (0.04 sec)

mysql> select Total-Paid-Refund from t where Total-Paid-Refund > 0;
Empty set (0.01 sec)



Тема Re: Странен mySQLнови [re: ro6avia]  
Автор нeщacтeн (gan.hit.bg)
Публикувано11.10.03 13:25



Ако напишеш WHERE Debt > 0 ще получиш
Unknown column 'Debt' in 'where clause'

- шантаво като теб ;)

Тема Re: Странен mySQL [re: salle]  
Автор нeщacтeн (gan.hit.bg)
Публикувано11.10.03 14:50



Това е добре, но при мен излизат 10-тина "странни" реда.
SELECT Total, Paid, Refund, Total-Paid-Refund AS Debt FROM `Invoice` WHERE Total-Paid-Refund>0 ORDER BY `Debt` ASC LIMIT 0, 30


Total Paid Refund Debt
55.49 31.49 24.00 0.00
77.93 17.93 60.00 0.00
359.92 323.93 35.99 0.00
111.65 51.65 60.00 0.00
65.87 41.87 24.00 0.00
146.02 68.21 77.81 0.00
216.08 96.08 120.00 0.00
128.99 92.99 36.00 0.00
349.48 316.18 33.30 0.00
401.06 324.03 77.03 0.00
314.81 99.14 215.67 0.00
401.80 200.91 200.89 0.00
427.79 247.79 180.00 0.00
193.78 193.77 0.00 0.01

Предполагам че тези числа не са набити с INSERT с точност до 2-я знак.
Примерно първото не е било 59.49 а 55.4934563... и
mySQL го е закръглил на 59.49.
Излиза обаче, че типът decimal само го показва до 2-я знак, но си го помни до незнам кой си знак. Някой има ли инфо до кой знак точно го помни???

В този случай аз си реших проблема като промених where клаузата на куерито
WHERE Total-Paid-Refund>=0.01 защото става дума за пари.
Но в друг случай едва ли ще бъде приложимо.
Все пак до колкото знам типът decimal е специално проектиран за работа с пари
и НЕ ТРЯБВА ДА ПРАВИ ТАКА!
Дали става въпрос за бъг?

- шантаво като теб ;)


Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.