Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Update считает неправильно, Interbase 7.x 
:(
    Опции темы
SPrograMMer
Дата 29.10.2006, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 5.11.2004
Где: Краснодар

Репутация: нет
Всего: 6



Значит, есть программулина (моя), в ней... ну пусть ведется учет чего-то. Причем раньше этот учет был раздельным, т е разделялся как бы по категориям, допустим на 10 категорий (назовем их римскими цифрами) .
Теперь решили вести этот самый учет без категорий. Что я для этого делаю:
1. Добавляю новое поле:
Код

Alter Table MyTable Add
 _Count Integer

поле добавляется.
2. суммирую все что раньше было по категориям и результат отправляю в новое поле: 
Код

Update MyTable
Set _Count=I+II+III+IV+V+VI+VII+VIII+IX+X

3. Если бы было все хорошо, то после убил бы 10 теперь ненужных полей:
Код

Alter Table MyTable Drop I, Drop II, Ну_и_так_Далее, Drop X

Но на 2-ом шаге происходит самое интересное. В _Count получается неизвестно, что, но чаще всего (наверное на 75%) значение получается удвоенное в 2 раза. Иногда (10%) - верное. А в остальных случаях должно быть например 3, а получается 5; должно быть 15, а получается 45.
Что самое интересное делаю выборку:
Код

Select _Count, (I+II+III+IV+V+VI+VII+VIII+IX+X) As NewCountMustBe From MyTable

В вычисляемом поле NewCountMustBe в этом случае содержаться верные данные (для всех полей).

Вот и объясните мне каким макаром Update считает неправильно?




--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
LSD
Дата 30.10.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 1
Всего: 538



Ситуацию можно воспроизвести?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
SPrograMMer
Дата 30.10.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 5.11.2004
Где: Краснодар

Репутация: нет
Всего: 6



т е ???

На нескольких машинах (чичас их трое, дальше - должно быть больше), на всех такое...
Сотворил хранимку:
Код

Create Procedure TempProc
AS
DECLARE VARIABLE ID Integer;
Declare Variable NewCount Float;
Begin
 For Select ID, (I+II+III+IV+V+VI+VII+VIII+IX+X) As NewCount From MyTable InTo :ID, :NewCount
 Do Begin
  UpDate MyTable
   Set _Count=:NewCount
   Where ID=:ID;
 End
End;

И выполнил - получилось... После хранимку убил... smile 


--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
LSD
Дата 31.10.2006, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 1
Всего: 538



Цитата(SPrograMMer @  30.10.2006,  22:47 Найти цитируемый пост)
т е ???

Дай скрипт таблицы, запроса, и тестовых данных.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
SPrograMMer
Дата 1.11.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 5.11.2004
Где: Краснодар

Репутация: нет
Всего: 6



Раз: 
Код


/* Table: MOVINGTABLE, Owner: SYSDBA */

CREATE TABLE "MOVINGTABLE" 
(
  "ID"    INTEGER NOT NULL,
  "IDCOMREG"    INTEGER,
  "IDSTORES"    INTEGER,
  "I"    FLOAT,
  "II"    FLOAT,
  "III"    FLOAT,
  "IV"    FLOAT,
  "V"    FLOAT,
 PRIMARY KEY ("ID")
);
SET TERM ^ ;


/* Triggers only will work for SQL triggers */

CREATE TRIGGER "TRIMOVINGTABLE" FOR "MOVINGTABLE" 
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  New.ID=Gen_ID(genMovingTable,1);
END
 ^

COMMIT WORK ^
SET TERM ;^
Два: (приложить не могу... smile даже такой маленький) 
Цитата(csv_файл)

I;ID;IDCOMREG;IDSTORES;II;III;IV;V
10;52;15;1;5;0;0;0
1;53;16;1;2;0;0;0
2;54;17;1;0;0;0;0
10;55;18;1;10;0;0;0
2;56;19;1;0;0;0;0
20;57;20;1;10;0;0;0
15;58;21;1;10;0;0;0
5;59;22;2;0;0;0;0
0;60;23;1;-5;0;0;0
-1;61;24;1;-1;0;0;0
-5;62;25;1;0;0;0;0
0;63;25;3;5;0;0;0
-5;64;26;1;-5;0;0;0
2;65;26;4;2;2;2;2
2;89;44;1;3;0;0;0
0;90;45;1;-8;0;0;0

Три:
Цитата(SPrograMMer @  29.10.2006,  10:25 Найти цитируемый пост)
1. Добавляю новое поле:

Код

Alter Table MyTable Add
 _Count Integer


поле добавляется.
2. суммирую все что раньше было по категориям и результат отправляю в новое поле: 
Код


Update MyTable
Set _Count=I+II+III+IV+V


PS: вопрос задавал... с большим количеством категорий (10), здесь же данные "насамом делешные"..


--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
LSD
Дата 2.11.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 1
Всего: 538



У меня на IB 7.5.1, все работает как положено.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
SPrograMMer
Дата 2.11.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 5.11.2004
Где: Краснодар

Репутация: нет
Всего: 6



Цитата(LSD @  2.11.2006,  13:00 Найти цитируемый пост)
У меня на IB 7.5.1, все работает как положено. 

Да и теоретически то же должно же все работать...  Ладно....
Цитата(SPrograMMer @  30.10.2006,  22:47 Найти цитируемый пост)
Сотворил хранимку:

Цитата(SPrograMMer @  30.10.2006,  22:47 Найти цитируемый пост)
И выполнил - получилось..

раз получилось, значит получилось... хоть и через одно место но все же...


--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.