Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Interbase - запрос с литералами / 15 сообщений из 15, страница 1 из 1
16.10.2014, 07:20
    #38778132
Dark Elf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Добрый день

Начал изучать Interbase и появился вопрос ответа на который я не нашёл в гугле (и в EmbedSQL.pdf тоже). Имеется следующий запрос:

Код: sql
1.
2.
3.
4.
5.
select rdb$generator_name as name, 'SEQUENCE' as typ from rdb$generators 
where upper(rdb$generator_name) like '%RD%' 
union all 
select rdb$index_name as name, 'INDEX' as typ from rdb$indices 
where upper(rdb$index_name) like '%RD%';



Если в обоих частях запроса написать 'INDEX' (или 'SEQUENCE', или 'что-то') то запрос работает. Если же строки разные (как в примере) то выдаётся ошибка:

Data type unknown.

Не подскажете как задать спецификацию типа в данном случа (или как-то по-другому заставить запрос работать)?
...
Рейтинг: 0 / 0
16.10.2014, 07:26
    #38778134
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
например так:

Код: sql
1.
2.
3.
4.
5.
select rdb$generator_name as name, cast('SEQUENCE' as varchar(10)) as typ from rdb$generators
where upper(rdb$generator_name) like '%RD%' 
union all 
select rdb$index_name as name, cast('INDEX' as varchar(10)) as typ from rdb$indices
where upper(rdb$index_name) like '%RD%';
...
Рейтинг: 0 / 0
16.10.2014, 08:39
    #38778161
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dark Elfupper(rdb$generator_name) like '%RD%' про containing еще погляди сразу, а то эмуляция контайнинга через лайк выглядит вырвиглазно
...
Рейтинг: 0 / 0
16.10.2014, 10:56
    #38778288
Dark Elf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Спасибо Вам обоим большое за ответы.

containing действительно классная вещь! Ну и STARTING WITH тоже :)
...
Рейтинг: 0 / 0
16.10.2014, 12:14
    #38778418
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Кроме того, ответь: зачем это у тебя один запрос с union all, а не два отдельных запроса?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.10.2014, 12:45
    #38778474
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dark Elfwhere upper(rdb$index_name) like '%RD%'
если тебе нужны только RDB$ таблицы, то это избыточно, и надо просто писать
where rdb$index_name starting with 'RDB$'
имена системных таблиц всегда upper.
...
Рейтинг: 0 / 0
16.10.2014, 12:47
    #38778478
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dark Elf,
насчет rdb$ и rdb$index_name - имя индекса по ПК и ФК не всегда может быть 'rdb$%'.
...
Рейтинг: 0 / 0
16.10.2014, 14:13
    #38778632
Dark Elf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dimitry SibiryakovКроме того, ответь: зачем это у тебя один запрос с union all, а не два отдельных запроса?


Это я пишу свою утилиту для поиска в различных СУБД (уже поддерживает 12 баз, Interbase в процессе добавления, критика очень даже привествуется).

http://habrahabr.ru/company/host-tracker/blog/210434/
...
Рейтинг: 0 / 0
16.10.2014, 14:20
    #38778643
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dark ElfDimitry Sibiryakovответь: зачем это у тебя один запрос с union all, а не два отдельных запроса?
Это я пишу свою утилиту для поиска в различных СУБД (уже поддерживает 12 баз, Interbase в
процессе добавления, критика очень даже привествуется).

Я не спрашивал "что ты пишешь", я спросил "почему это один запрос, а не два отдельных".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
16.10.2014, 14:53
    #38778710
Dark Elf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dimitry SibiryakovDark Elfпропущено...

Это я пишу свою утилиту для поиска в различных СУБД (уже поддерживает 12 баз, Interbase в
процессе добавления, критика очень даже привествуется).

Я не спрашивал "что ты пишешь", я спросил "почему это один запрос, а не два отдельных".


Ну я как бы выдаю все найденные объекты БД в одну таблицу - одним запросом собранным с помощью union all это делать удобнее хотя я конечно могу быть неправ.
...
Рейтинг: 0 / 0
16.10.2014, 16:35
    #38778860
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dark Elfя как бы выдаю все найденные объекты БД в одну таблицу
Последовательности и индексы в одной таблице? Убиться...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.10.2014, 04:31
    #38779283
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dark Elfкритика очень даже привествуется).

ОК. Как сделать, чтобы программа работала?
...
Рейтинг: 0 / 0
17.10.2014, 04:45
    #38779284
Dark Elf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dimitry SibiryakovDark Elfя как бы выдаю все найденные объекты БД в одну таблицу
Последовательности и индексы в одной таблице? Убиться...


Если отмечены галочки что нужно выдавать оба типа объектов то почему нет.

Gallemar с ошибкой разбираюсь
...
Рейтинг: 0 / 0
17.10.2014, 11:40
    #38779623
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dark ElfЕсли отмечены галочки что нужно выдавать оба типа объектов то почему нет.

Хотя бы потому, что цикл по галочкам с посылкой отдельных запросов программируется проще,
чем сборка одного мегазапроса.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.10.2014, 13:39
    #38779940
Dark Elf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Interbase - запрос с литералами
Dimitry SibiryakovDark ElfЕсли отмечены галочки что нужно выдавать оба типа объектов то почему нет.

Хотя бы потому, что цикл по галочкам с посылкой отдельных запросов программируется проще,
чем сборка одного мегазапроса.


Поверьте на F# (он же переделанный Objective CAML), да и прочих функциональных языках программирования, это делается очень легко.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Interbase - запрос с литералами / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]