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

Вниз

Выборка из IBase   Найти похожие ветки 

 
S@shka   (2003-07-18 12:13) [0]

Народ вот как задачка
есть сервер БД 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__"
и т.д.
естественно это гонять столько запросов по сети не рационально. Думаю возможно было бы написать хранимую процедуру на серваке, чтобы она возвращала сразу необходимый массив (ну или строку).
Если кто то сталкивался с подобным прошу помосчи. заранее спасибо.


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

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


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

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


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

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


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

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


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

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


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

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




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

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


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

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

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




Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
14-33265
Soft
2003-07-23 16:59
2003.08.11
Компьютерные игры для взрослых


3-33058
mikhasenko.anton
2003-07-18 14:13
2003.08.11
Компонент TDBF - не могу понять почему при создании


11-33090
nsvi
2002-12-05 08:23
2003.08.11
Как программно перегенерировать меню?


14-33313
app
2003-07-23 13:20
2003.08.11
Моделирование человеческой личности (Dmitriy O. 23.07.03 13:17


14-33344
Ravshan
2003-07-25 10:15
2003.08.11
Подскажите Editor или Viewer для DOS/WIN текста





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский