Форум: "Базы";
Текущий архив: 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.012 c