Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.15;
Скачать: CL | DM;

Вниз

Как сохранить вычисляемые поля в базе данных?   Найти похожие ветки 

 
4ik ©   (2005-11-16 19:56) [0]

Доброго времени суток. Такой вопрос. Как сохранить вычисляемые поля в базе данных?
Поясню на примере. Допустим у меня есть три целочисленных поля «А»,  «В» и «С»
С=А-В
Как сделать что бы происходило вычисление и результат сохранялся в таблице.

Пока я вижу только два пути:
1. Создать вычисляемое поле в ADOTable, и потом построчно записать результат вычислений в поле С.
2. Создать SQL запрос который будет вычислять эту разность, и результат заносить в поле С (Этот вариант я представляю немного туманно, точно не знаю как его реализовать)

Подскажите как можно сделать это проще. В каком направлении копать?


 
Vlad ©   (2005-11-16 20:16) [1]


> 2. Создать SQL запрос который будет вычислять эту разность,
>  и результат заносить в поле С (Этот вариант я представляю
> немного туманно, точно не знаю как его реализовать)


update yourtable set c = a - b


 
Desdechado ©   (2005-11-16 20:34) [2]

зачем хранить то, что можно посчитать, особенно если подсчет простой?


 
4ik ©   (2005-11-16 20:52) [3]

to Vlad
 Спасибо. А если у меня 30 строк с такими вычислениями и нужно чтоб
 всё вычислялось в риалтайме? Если вставить запрос в обработчик
 выхода из ячейки не очень накладно получиться?

to Desdechado
 Представте такую ситуацию. Каждый день заполняем 30 строк
   а, b,  c[сегодня]=a-b, d=c[вчера]-c[сегодня]
 и при этом столбик "с" участвует в куче других вычислений (правда тоже
 достаточно простых. Это что каждый раз всё перевычислять?


 
Vlad ©   (2005-11-16 21:24) [4]


> столбик "с" участвует в куче других вычислений

вычисления не сильно усложнятся, если вместо столбика "c" подставить "(a-b)"
Зато не будешь тратить время на ненужный update таблицы
Честно говоря, обычно так не делают. Разве что в случаях, когда между столбцами a и b сложная зависимость, которую трудно рассчитать "на лету" используя функции сервера.


 
4ik ©   (2005-11-17 00:57) [5]

to Vlad
 Возможно вы правы. У меня совсем нет опыта в програмировании БД.
 Сейчас попытаюсь ещё точнее обрисовать задачу и буду признателен
 если скажете как проще, сохранять "с" или вычислять

есть таблица следующего вида:

| id_key | object № | Date |   a   |   b   |  c=a-b  | d=c(n.11)-c([n-1].11)  
+-------+----------+------+-----+-----+--------+----------------------
|     *   |        1     | 1.11  |   10  |   9   |    1     | ?
|          |        2     | 1.11  |   10  |   8   |    2     | ?
|          |        3     | 1.11  |   11  |   5   |    6     | ?
|          |        ...    |  ...    |  ...  |   ...  |    ...    |      ...
|          |        1     | 2.11  |   15  |   10 |     5     | 4
|          |        2     | 2.11  |   15  |   10 |     5     | 3
|          |        3     | 2.11  |   16  |   14 |     5     |      -1
|          |        ...    |  ...    |  ...  |    ... |    ...    |      ...
                 n.11
 в проге должна быть возможность получить сумму всех d
        сумму всех а[n]-a[n-1]
        сумму всех b[n]-b[n-1]

 Вы считаете что лучше всё это вычислять?


 
4ik ©   (2005-11-17 00:59) [6]

простите ошибся n.11 должна быть в столбце Date

| id_key | object № | Date |   a   |   b   |  c=a-b  | d=c(n.11)-c([n-1].11)  
+-------+----------+------+-----+-----+--------+----------------------
|     *   |        1     | 1.11  |   10  |   9   |    1     | ?
|          |        2     | 1.11  |   10  |   8   |    2     | ?
|          |        3     | 1.11  |   11  |   5   |    6     | ?
|          |        ...    |  ...    |  ...  |   ...  |    ...    |      ...
|          |        1     | 2.11  |   15  |   10 |     5     | 4
|          |        2     | 2.11  |   15  |   10 |     5     | 3
|          |        3     | 2.11  |   16  |   14 |     5     |      -1
|          |        ...    |  ...    |  ...  |    ... |    ...    |      ...
                             n.11



Страницы: 1 вся ветка

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
2-1135261503
Majesto
2005-12-22 17:25
2006.01.15
Вызов обработчика события


2-1135515974
gidd
2005-12-25 16:06
2006.01.15
ScrollBox1.ComponentCount


14-1135245152
pavel_guzhanov
2005-12-22 12:52
2006.01.15
Как возвести число а дробную степень?


1-1134150399
OLEGNik
2005-12-09 20:46
2006.01.15
Как экспортировать procedure(): overload из .dll


2-1135592191
_Lucifer_
2005-12-26 13:16
2006.01.15
Выполнение обработке в одной форме, а показ прогресса в другой.