Главная страница
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.05 c
2-1135586234
Катерина
2005-12-26 11:37
2006.01.15
Исключения!


2-1135525506
lex85
2005-12-25 18:45
2006.01.15
DateTimePicker


2-1135155643
Дмитрий_177
2005-12-21 12:00
2006.01.15
Про динамический массив


3-1131959714
nstur
2005-11-14 12:15
2006.01.15
Дерево в базе данных


2-1135427876
LEV'S
2005-12-24 15:37
2006.01.15
Как поместить в трэй свою программу??