![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать UNION во VIEW в IB5.5 [D7, IB5.x]
jenya_d © (2004-02-13 11:13:00)
Доброго времени суток профи!!!
Подскажите пожалста как можно заставить IB55 сохранить представление в котором есть объединение запросов с помощью
UNION?
Заранее благодарен.
P.S. в доке написано, что на DSQL не получется, а как можно это реально сделать?
jenya_d (2004-02-13 15:40:00) [1]
>Val © (13.02.04 15:11)
естественно не получилось. Типа умный сервак-то.
Val (2004-02-13 15:11:00) [2]
>jenya_d (13.02.04 14:51) [24]
попытаться обмануть сервер
create myview as
select * from (ваш запрос) - хотя сомневаюсь что получится - просто ради интереса.
jenya_d (2004-02-13 15:09:00) [3]
Всем большое спасибо за помощь. Я кажется разобрался с этой проблемкой и решение получается очень неплохое - селективная процедура.
P.S. а вообще по этой проблемке как выяснилось есть статья на ibase.ru
Johnson™ (2004-02-13 15:02:00) [4]
Была такая проблемма решил установкой IB из 7 делфей, сложилось такое впечатление что 5.5 не понимает такую постановку вопроса.
jenya_d (2004-02-13 14:51:00) [5]
>Кщд (13.02.04 14:36)
ну если уш переходить так по полной программе
>Кщд (13.02.04 14:39)
да вычистив и перелопатив при этом кучу исходников, а на это многовато времени надо, а его к сожалению нету.
>Val © (13.02.04 14:40)
ну если не трудно подскажите как, буду признателен.
Val (2004-02-13 14:40:00) [6]
>jenya_d (13.02.04 14:26) [18]
вы о чем, уважаемый? вас затрудняет сделать внутренний запрос из всего этого добра с union?
Кщд (2004-02-13 14:39:00) [7]
Johnmen © (13.02.04 14:36) [20] + предварительно вычистив новые ключевые слова в именах объектов, буде такие есть...
Кщд (2004-02-13 14:36:00) [8]
смена диалекта при переходе - необязательна
Johnmen (2004-02-13 14:36:00) [9]
>jenya_d (13.02.04 14:31) [19]
Никаких проблем с переходом нет.
Всё, что надо сделать, это backup под IB и restore под FB.
jenya_d (2004-02-13 14:31:00) [10]
>Johnmen © (13.02.04 14:26)
я уже думал об этом (на FB1.5 например), но у меня тут пара больших комплекса работает под IB55, да плюс читал про проблемки с компонентом IBX TIBStoredProc - надо переводить все используемые процедуры на TIBQuery
(select * from procedure(...))
да плюс в другой диалект переход довольно напряжен на рабочих-то базах.
jenya_d (2004-02-13 14:26:00) [11]
>Val © (13.02.04 14:21)
ну и как вы это себе представляете? Мне ведь нужно именно объединить разные наборы в один, чтобы потом одним запросом сделать группирование по вью.
А затеял я всю эту конитель с вью поскольку в IB55 нет поддержки группировки по UDF.
Johnmen (2004-02-13 14:26:00) [12]
Через Embedded SQL, значит напрямую работать с IB API.
IB6 и клоны.
Может просто перейти на клон ?
jenya_d (2004-02-13 14:22:00) [13]
>Johnmen © (13.02.04 14:18)
дело в том, что я уже указывал что IB55 не поддерживает union во вью на DSQL, однако в доке сказано, что можно это сделать только на Embedded SQL. А что это за хрень я не особо знаю.
P.S. а у вас какой IB?
Val (2004-02-13 14:21:00) [14]
а если попытаться создать вью на основе
select * from(....)?
Johnmen (2004-02-13 14:18:00) [15]
>jenya_d (13.02.04 14:11)
Единственное абстрактное предположение, что IB5 не поддерживает юнион во вью...
jenya_d (2004-02-13 14:11:00) [16]
>Johnmen © (13.02.04 14:04)
нет не проходит, выдает ту же ошибку что я указывал в jenya_d (13.02.04 13:36). Создание вью выполняется в IB Expert 2.0-SQL редакторе
Johnmen (2004-02-13 14:04:00) [17]
>jenya_d (13.02.04 13:45) [11]
А так проходит ?
CREATE VIEW TestView(DATREG)
AS
select datreg from dogovor
union
select datreg from dogovor
И откуда выполняется создание вью ?
jenya_d (2004-02-13 13:45:00) [18]
>Johnmen © (13.02.04 13:42)
привожу:
CREATE VIEW ZP(
DATREG,
F_YEAR,
ID,
ZARP)
AS
select t1.datreg, f_year(t1.datreg), t1.id, t1.zarp from dogovor t1
where t1.reg_pal = "-" and t1.anulir = "-" and t1.datrast is null
and t1.datregrast is null and (t1.id_osnrast = 0 or t1.id_osnrast is null)
and (select count(t2.id) from dop_dog t2 where t2.id = t1.id) = 0
union
select t4.datreg, f_year(t4.datreg), t4.id, t4.zarp from dogovor t4
where t4.reg_pal = "-" and t4.anulir = "-" and t4.datrast is null
and t4.datregrast is null and (t4.id_osnrast = 0 or t4.id_osnrast is null)
and (select count(t5.id) from dop_dog t5 where t5.id = t4.id) > 0
and (select count(t6.id_dog) from uchet_par t6 where
t6.id_dog = t4.id and t6.id_param = 8 and t6.id_nar = -1 and t6.id_dop > -1) = 0
union
select t7.datreg, f_year(t7.datreg), t7.id, t9.zarp from dogovor t7 join uchet_par t8
on t7.id = t8.id_dog and t8.id_param = 8
and t8.id_nar = -1 join dop_dog t9 on t7.id = t9.id
where t7.reg_pal = "-" and t7.anulir = "-" and t7.datrast is null
and t7.datregrast is null and (t7.id_osnrast = 0 or t7.id_osnrast is null)
and t9.id_dop = (select max(t10.id_dop) from dop_dog t10 where t10.id = t7.id)
где f_year - UDF - возвращает год из даты
Johnmen (2004-02-13 13:42:00) [19]
>jenya_d (13.02.04 13:36) [9]
Странно это... Приведи полностью код вью.
jenya_d (2004-02-13 13:36:00) [20]
>Johnmen © (13.02.04 12:21)
не получается, все равно выдает:
"Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 11, char -1.
union."
>Fay © (13.02.04 12:46)
Имя(...) - это имя представления со списком полей в скобках