Главная страница
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.034 c
2-1135352750
kop
2005-12-23 18:45
2006.01.15
DBMemo


6-1127764469
nevalex
2005-09-26 23:54
2006.01.15
поиск компьютеров в сети


3-1132322433
alpine
2005-11-18 17:00
2006.01.15
Можно ли добавить поле из третьей таблицы с помощью SQL?


14-1135156039
dapher
2005-12-21 12:07
2006.01.15
Способы отбора данных


3-1132318779
vl
2005-11-18 15:59
2006.01.15
Добавление данных в таблицу