Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выборка из IBase


S@shka ©   (2003-07-18 12:13:00) 

Народ вот как задачка
есть сервер БД c табличкой (TEST) напоненной приблизительно следующим
CODE VALUE
---------------
1 AAAA
2 ABCD
3 CCCC
и так далее
Задача. Необходимо подсчитать количество вхождения букв А в первой позиции, букв В в первой позиции и т.д.
Осложняется задача тем, что в первой позиции может быть 3 варианта (т.е. от А до С), вот второй, например 4 (то есть А..D) и т.д. но все это известно естественно.
Пока что энто делается из приложения клиент путем посылки запросов вида
select count (CODE) from TEST where VALUE LIKE "A___"
select count (CODE) from TEST where VALUE LIKE "B___"
select count (CODE) from TEST where VALUE LIKE "_A__"
и т.д.
естественно это гонять столько запросов по сети не рационально. Думаю возможно было бы написать хранимую процедуру на серваке, чтобы она возвращала сразу необходимый массив (ну или строку).
Если кто то сталкивался с подобным прошу помосчи. заранее спасибо.


Johnmen   (2003-07-18 12:46:00) [1]

>S@shka © (18.07.03 12:40)
>Как хотя бы примерно????

Примерно что ? Синтаксис ? Идею ?


ЮЮ   (2003-07-18 12:41:00) [2]

преймущества select count() тогда и преимущества, когда работают с полями. Т.е. со структурой (Position, Simbol) ты и получил бы одним запросом
SELECT Simbol, Position, Count(ID)
GROUP BY Simbol, Position



Smashich   (2003-07-18 12:41:00) [3]

берешь строку и парсишь. увеличиваешь счетчик соотвесвующий. следующая запись


S@shka   (2003-07-18 12:40:00) [4]

Как хотя бы примерно????


Johnmen   (2003-07-18 12:34:00) [5]

Хранимая процедура с одним единственных проходом.


S@shka   (2003-07-18 12:33:00) [6]

VALUE имеет смысл имеенно как совокупность символов.
Зачем сваливать задачу подсчета на клиента - на фига тогда все преймущества select count()
это мне придется все качнуть и самому писать прогу обработки
Я думаю надо создать процедуру на серваке вот только думаю как??
изначально есть поле ААА в котором запись вида 2342
это значит что всего позиции
1 A..B
2 A..C
3 A..D
4 A..B
на до бы все посчитать и отпавить например строкой


ЮЮ   (2003-07-18 12:23:00) [7]

1) Подсчитать все на клиенте, пройдя по таблице 1 раз
2) Если Value как совокупность символов смысла не имеет, то переделать структуру (Position, Simbol)


Zacho   (2003-07-18 12:22:00) [8]

В IB6 и выше (а так же в FB и Yaffil) есть функция SUBSTRING ( FIELD_OR_VARIABLEFROM POSITIONFOR LENGTH) В более ранних версиях можно использовать UDF


Наверх

Титульная страница Поиск, карта сайта Написать письмо