|
|
|
| 3-й день прыгаю с бубном над базой, а суть вот в чем - если заполнять таблицы через phpmyadmin - то нет проблем, но ести заполнять через другой интерфейс (тоже на php) или хотя бы отредактировать цифровую запись, то все.... никакой SELECT в аргументе которого стоит условие на выбор числового поля не работает. Тем неменее, числовые поля с удовольствием складываются и вычитаются. Толи бубен у меня не тот, толи моя софтина как-то глючит в заполнении числовых полей... не могу понять. Выкладываю эту самую базу "живьем", может кто сможет помочь разобраться... Глючат запросы к числовым полям в таблице POSTAVKI . | |
|
|
|
|
|
|
|
для: Duran
(09.03.2005 в 08:26)
| | У вас поля имеют тип не INT, а VARCHAR - так нужно? Дело в том, что в полях n_dogs и n_spec вместе с цифрами стоит символ "ф" - если бы тип столбца был INT - вы не смогли бы вставить такое значение. | |
|
|
|
|
|
|
|
для: cheops
(09.03.2005 в 09:33)
| | Да, тип символьный, потому, что такие номера (с символом "Ф") мне нужно использовать в полях n_dogs (номер договора) и n_spec (номер спецификации).
Собственно, с этими полями граблей и не возникало, но методом научного тыка было выяснено, что поле summ_p весьма критично к заполнению из разных оболочек.
Например, запрос типа SELECT * FROM POSTAVKI WHERE SUMM_P = 300.67 ничего не отдаст, а запрос к этой же таблице типа : SELECT * FROM POSTAVKI WHERE N_GRZAK= 001 - выдаст соответствующую строчку :(. Почему возникают проблемы с запросом к числовому полю... мне пока не дано понять... :).
Вот исходники проги, которую использовал для работы. | |
|
|
|
|
|
|
|
для: Duran
(09.03.2005 в 10:29)
| | вот так вроде работает SELECT * FROM POSTAVKI WHERE SUMM_P like 300.67
тут косяк по-моему с дробными числами. | |
|
|
|
|
|
|
|
для: Axxil
(09.03.2005 в 12:07)
| | Эх... ню, сапасибо тапорик на добром слове :). Ну LIKE - так LIKE %). Была у меня такая мысля, щас потестил ... вроде другие похожие значения при использовании LIKE в этом контексте не выбераются. | |
|
|
|
|
|
|
|
для: Duran
(09.03.2005 в 10:29)
| | Хм... ну это как бы обычное дело, сравнивать числа с плавающей точкой оператором = никогда нельзя, так как в каком-нибудь 8 знаке после запятой накапливается ошибка, следует либо действительно LIKE пользоваться, либо
SELECT * FROM POSTAVKI WHERE SUMM_P >= 300.67 AND SUMM_P < 300.68
|
| |
|
|
|
|
|
|
|
для: cheops
(09.03.2005 в 22:54)
| | А ещё лучше вместо float(7,2) использовать decimal(7,2), так как в первом случае цифры лишь номинальные и служат для форматирования, а втором железные, так как этот тип специально предназначен для денежных расчётов. | |
|
|
|
|
|
|
|
для: cheops
(09.03.2005 в 22:56)
| | Кхм... ай эм сорри :). Ну я и серость :). БА-А-АЛШОЕ сапасибо !. Пойду выменяю у Буратино букварь на курточку. Хм... а может быть великий ХУФУ подскажет место залегания более мануального манускриптика ? Уж больно хочется обладать хотябы частью знаний древних египтян в области MYSQL :). | |
|
|
|
|
|
|
|
для: Duran
(13.03.2005 в 15:59)
| | :))) Раскопки следует начать с официального русского мануала MySQL (можно начинать сразу с третьей главы) http://dev.mysql.com/doc/mysql/ru/index.html. Кроме этого, сейчас на русский переведно две замечательные книли Поля Дюбуа (обе объёмом по 1000 страниц)
- MySQL
- MySQL. Сборник рецептов.
PS Лучше по MySQL сейчас на русском ничего нет, но по большому счёту для работы с версиями не привышающими 4.1 больше ничего и не нужно. | |
|
|
|