Помогите с запросом для Firebird!
Модератор: Модераторы
-
ViruZ
- постоялец
- Сообщения: 175
- Зарегистрирован: 30.05.2005 17:41:12
- Откуда: Украина
- Контактная информация:
Помогите с запросом для Firebird!
Помогите составить SQL-запрос к БД Firebird, с помощью которого можно было бы заменить определенное значение одного столбца с именем NLPU для нескольких сотен таблиц, все таблицы начинаются с буквы F. Возможно ли одним запросом по шаблону имени таблицы провести такую замену?
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
если использовать execute statament - то очень просто
также можно использовать execute ibeblock - но это фишка IBExepert-а
сначала сделай запрос к rdb$relations - выбери все интересуюшие тебя таблицы - rdb$relations.rdb$relations_name like 'F%'
а потом формируй в итерациях строку запроса по эти выбранным таблицам и делай в нём что тебе надо.
также можно использовать execute ibeblock - но это фишка IBExepert-а
сначала сделай запрос к rdb$relations - выбери все интересуюшие тебя таблицы - rdb$relations.rdb$relations_name like 'F%'
а потом формируй в итерациях строку запроса по эти выбранным таблицам и делай в нём что тебе надо.
-
ViruZ
- постоялец
- Сообщения: 175
- Зарегистрирован: 30.05.2005 17:41:12
- Откуда: Украина
- Контактная информация:
IBExpert'ом как раз и пользуюсь. Что и в каком порядке нужно делать? Вопрос затал потому, что с SQL-запросами мне практически еще не приходилось работать, так что опыта в этой области у меня пока никакого
Если не сложно, подскажите готовый скрипт.
Если не сложно, подскажите готовый скрипт.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
пожалуста:
А вобще то для таких вещей специально придуманы Forign keys.
P.S.
Если не секрет - зачем это несколько сотен таблиц? а где нормализация и прочее?
Код: Выделить всё
execute block
as
declare variable f_table_name varchar(30);
declare variable sql_text varchar(1000);
begin
for
select
cast(rdb$relation_name as varchar(30))
from
rdb$relations
where
rdb$relations.rdb$system_flag=0
and
rdb$relations.rdb$view_blr is null
and
rdb$relation_name like 'TB_%' --Выберем все наши таблицы, которые начинаются с "TB_"
into
:f_table_name
do
begin
--Сфоррмируме текст запоса
sql_text = 'update ' || f_table_name || 'set nlpu = 11111 where nlpu = 2222';
execute statement sql_text;
end
endА вобще то для таких вещей специально придуманы Forign keys.
P.S.
Если не секрет - зачем это несколько сотен таблиц? а где нормализация и прочее?
-
ViruZ
- постоялец
- Сообщения: 175
- Зарегистрирован: 30.05.2005 17:41:12
- Откуда: Украина
- Контактная информация:
Большое спасибо!!!
Таблицы из программы годовой отчетности по медицинской статистике - Medstat, сама программа находится на сайте http://www.medstat.ck.ua/, там можно скачать и посмотреть структуру БД.
Проблема возникла, когда поменялся справочник учреждений - поменялись коды, (коды, которые начинались на 505**** поменялись на 506****) но если действовать по инструкции, то уже внесенные данные должны были пропасть, а готово уже большая часть отчета, поэтому мне пришлось в обход программы подключаться к БД и менять соответсвующие коды в заполненных таблицах, но вручную этот процесс весьма трудоемкий из-за большого количества таблиц.
Таблицы из программы годовой отчетности по медицинской статистике - Medstat, сама программа находится на сайте http://www.medstat.ck.ua/, там можно скачать и посмотреть структуру БД.
Проблема возникла, когда поменялся справочник учреждений - поменялись коды, (коды, которые начинались на 505**** поменялись на 506****) но если действовать по инструкции, то уже внесенные данные должны были пропасть, а готово уже большая часть отчета, поэтому мне пришлось в обход программы подключаться к БД и менять соответсвующие коды в заполненных таблицах, но вручную этот процесс весьма трудоемкий из-за большого количества таблиц.
Помогите с запросом!
Суть вот в чем: есть основная TABL и справочные TABL1, TABL2, TABL3. Справочные связаны с основной через таблицу связки LINKS, которая имеет структуру:
Не получается построить запрос на список значений основной TABL когда заданы LINKS.LINK нескольких справочных таблиц сразу.
Суть вот в чем: есть основная TABL и справочные TABL1, TABL2, TABL3. Справочные связаны с основной через таблицу связки LINKS, которая имеет структуру:
Код: Выделить всё
ID
TABL - ID основной TABL
LINK - ID справочной (одной из TABL1, TABL2, TABL3)
TABL - номер справочной таблицы
Не получается построить запрос на список значений основной TABL когда заданы LINKS.LINK нескольких справочных таблиц сразу.
Попробуйте этим, быстрее будет , а потом удалите лишнее
http://www.sqlmanager.net/ru/products/i ... r/download
http://www.sqlmanager.net/ru/products/ibfb/query
Добавлено спустя 30 секунд:
Есть бесплатная версия для баз до 100 мегабайт
http://www.sqlmanager.net/ru/products/i ... r/download
http://www.sqlmanager.net/ru/products/ibfb/query
Добавлено спустя 30 секунд:
Есть бесплатная версия для баз до 100 мегабайт
Спасибо!
Решил этот вопрос...
Решил этот вопрос...
