Помогите с запросом для Firebird!

Модератор: Модераторы

Помогите с запросом для Firebird!

Сообщение ViruZ » 23.12.2008 12:42:04

Помогите составить SQL-запрос к БД Firebird, с помощью которого можно было бы заменить определенное значение одного столбца с именем NLPU для нескольких сотен таблиц, все таблицы начинаются с буквы F. Возможно ли одним запросом по шаблону имени таблицы провести такую замену?
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина

Re: Помогите с запросом для Firebird!

Сообщение alexs » 23.12.2008 13:57:06

если использовать execute statament - то очень просто
также можно использовать execute ibeblock - но это фишка IBExepert-а
сначала сделай запрос к rdb$relations - выбери все интересуюшие тебя таблицы - rdb$relations.rdb$relations_name like 'F%'
а потом формируй в итерациях строку запроса по эти выбранным таблицам и делай в нём что тебе надо.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Помогите с запросом для Firebird!

Сообщение ViruZ » 23.12.2008 14:37:48

IBExpert'ом как раз и пользуюсь. Что и в каком порядке нужно делать? Вопрос затал потому, что с SQL-запросами мне практически еще не приходилось работать, так что опыта в этой области у меня пока никакого :oops:
Если не сложно, подскажите готовый скрипт.
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина

Re: Помогите с запросом для Firebird!

Сообщение alexs » 23.12.2008 16:49:58

пожалуста:
Код: Выделить всё
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.
Если не секрет - зачем это несколько сотен таблиц? а где нормализация и прочее?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Помогите с запросом для Firebird!

Сообщение ViruZ » 24.12.2008 10:52:46

Большое спасибо!!!
Таблицы из программы годовой отчетности по медицинской статистике - Medstat, сама программа находится на сайте http://www.medstat.ck.ua/, там можно скачать и посмотреть структуру БД.
Проблема возникла, когда поменялся справочник учреждений - поменялись коды, (коды, которые начинались на 505**** поменялись на 506****) но если действовать по инструкции, то уже внесенные данные должны были пропасть, а готово уже большая часть отчета, поэтому мне пришлось в обход программы подключаться к БД и менять соответсвующие коды в заполненных таблицах, но вручную этот процесс весьма трудоемкий из-за большого количества таблиц.
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина

Re: Помогите с запросом для Firebird!

Сообщение Ustas » 18.04.2012 14:43:36

Помогите с запросом!
Суть вот в чем: есть основная TABL и справочные TABL1, TABL2, TABL3. Справочные связаны с основной через таблицу связки LINKS, которая имеет структуру:
Код: Выделить всё
ID
TABL - ID основной TABL
LINK - ID справочной (одной из TABL1, TABL2, TABL3)
TABL - номер справочной таблицы

Не получается построить запрос на список значений основной TABL когда заданы LINKS.LINK нескольких справочных таблиц сразу.
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: Помогите с запросом для Firebird!

Сообщение Ism » 18.04.2012 15:06:31

Попробуйте этим, быстрее будет , а потом удалите лишнее

http://www.sqlmanager.net/ru/products/i ... r/download
http://www.sqlmanager.net/ru/products/ibfb/query

Добавлено спустя 30 секунд:
Есть бесплатная версия для баз до 100 мегабайт
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Помогите с запросом для Firebird!

Сообщение Ustas » 18.04.2012 16:22:05

Спасибо!
Решил этот вопрос...
Ustas
постоялец
 
Сообщения: 146
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru