![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CrossTab в Interbase
sashag © (2003-10-30 13:03:00)
Привет всем.
Возникла необходимость в создании перекрестного запроса в Interbase 6.0. Возможно ли это?
Val (2003-10-31 10:44:00) [1]
>Zacho © (30.10.03 18:26) [6]
посмотрел ситаксис, действительно, в IB так нельзя :(
Zacho (2003-10-30 19:33:00) [2]
Тоже вариант, но так как в IB операторы DDL не доступны в ХП, то все равно задачу придется разбить на три части : формирование запроса и структуры таблицы, создание таблицы, выполнение запроса и заполнение таблицы.
Sandman25 (2003-10-30 18:29:00) [3]
В любом случае можно сделать таблицу и записать в нее результат с помощью хранимой. Если временных таблиц нет, то можно генерировать уникальные имена (+ включать в них имя пользователя)
Zacho (2003-10-30 18:26:00) [4]
> Val © (30.10.03 17:50) [5]
А попробуй привести пример ХП, возвращающей набор данных с переменным кол-вом полей :-)
Val (2003-10-30 17:50:00) [5]
>MsGuns © (30.10.03 15:41) [4]
а нельзя набор данных возвращать, а не параметры? - тогда проблемы переменного количества быть не должно.
MsGuns (2003-10-30 15:41:00) [6]
>sashag © (30.10.03 14:29) [2]
>Я могу делать это вручную (в смысле на клиенте), но я хочу, чтобы это делал сам сервер
Т.к. колонок в кроссе переменное кол-во, то выходит, что ХП должна возвращать переменное кол-во параметров. Хотя, конечно, можно забить достаточно большой их список и незадействованные параметры-колонки шуровать в null. Тогда, пожалуй, можно все это хозяйство взвалить на мощные плечи сервера ;))
Zacho (2003-10-30 14:33:00) [7]
> sashag © (30.10.03 14:29) [2]
Не может это делать сам сервер, нет у него такой фичи. Конечно, можно сделать в FB 1.5 ХП c EXECUTE STATEMENT, но представляю, какие тормоза будут...
sashag (2003-10-30 14:29:00) [8]
Я могу делать это вручную (в смысле на клиенте), но я хочу, чтобы это делал сам сервер
MsGuns (2003-10-30 13:52:00) [9]
Возможно в два этапа.
На первом определяется список кросс-колонок запросом по уник.значениям соотв.полей записей осн. датасета
На втором динамически создается запрос с вложенными запросами на каждую кросс-колонку.
НастоящиеМастера все это умудряются запихать в одну процедуру ;))