Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Подсчёты в таблице базы.

Пользователи, просматривающие топик: 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

Поможете это реализовать.
Post #: 1
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
Post #: 2
RE: Подсчёты в таблице базы. - 2008-03-31 13:54:00.783333   
T

Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
да, это ясно, а как использовать FOR, чтобы перебрать все значения ключа?
Post #: 3
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 но чёто сомневаюсь… щас буду пробовать…
Post #: 4
RE: Подсчёты в таблице базы. - 2008-04-01 10:48:42.293333   
dos 999

Сообщений: 331
Оценки: 0
Присоединился: 2007-12-17 10:49:07.556666
Есть хорошая книга для новечков А.Шкрыль "Разработка клиент серверных приложений в Delphi"
там описываються основы работы и в FB/IB и MSSQL

Советую её заказать если денег не жалко.

По теме: ну чё получилось?
Post #: 5
RE: Подсчёты в таблице базы. - 2008-04-01 13:41:52.923333   
T

Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
Книгу щас поищу в нэте в эл. варианте, по теме решил делать не на тригере а на процедуре хранимой, т.к. напряжно пересчитывать все таблицы средних значений… хай клиент даёт запрос и на него будет уже считаться среднее значение…
Post #: 6
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/*невыходит подскожите пожалуйста
Post #: 7
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)–
Post #: 8
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

Где ошибка?
Post #: 9
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)

процедура откомпилилась, но непашет… выдаёт нул на выходной параметр…
Post #: 10
RE: Подсчёты в таблице базы. - 2008-04-16 13:53:55.090000   
T

Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
Обнулил переменные перед использованием, процедура запахала правильно)))
Теперь буду мучаться с вызовом её из дельфей…
З.Ы. Помог бы кто? ))) Иль новую тему создавать?
Post #: 11
Страниц:  [1]
Все форумы >> [Прочее] >> Подсчёты в таблице базы.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.