Главная страница
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.041 c
3-1132467009
AleQ
2005-11-20 09:10
2006.01.15
База в Delphi 8


14-1134921013
Nic
2005-12-18 18:50
2006.01.15
Какие ассоциации у Вас...


3-1132307475
4ik
2005-11-18 12:51
2006.01.15
Можно в DBGrid назначить одной ячейке формулу?


2-1133802174
Userrrrr
2005-12-05 20:02
2006.01.15
Как скопировать файл из интернет на сервер?


14-1134672016
YurikGL
2005-12-15 21:40
2006.01.15
Друг попросил задачку решить