Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.016 c
6-1127994898
Cameron
2005-09-29 15:54
2006.01.15
проблема передачи через сокеты не могу передать больше 8 кб


3-1132562149
diwww
2005-11-21 11:35
2006.01.15
Как обновлять базу после установки галочки?


2-1135416301
RX
2005-12-24 12:25
2006.01.15
Почему не заходит в Брейк ?


2-1135245919
Вт
2005-12-22 13:05
2006.01.15
Как установить в заданную позицию DBGrid


10-1111562885
AloneAli
2005-03-23 10:28
2006.01.15
Как узнать самый крайний активный левый столбец в Excel е?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский