Консультация № 74433
06.02.2007, 16:46
0.00 руб.
0 7 4
Здравствуйте, уважаемые эксперты!
Есть база данных - примерно 300 таблиц с содержимым... Структуру БД (именно этой, то есть, кто за что отвечает) плохо себе представляю... Управляется скриптом. Знаю, что при создании объектов, данные сохраняются в БД. Но таблиц ТАК много и они ТАКИЕ большие, что найти только что добавленные данные весьма проблематично и долго... Напрашивается простое решение проблемы: после каждого добавления делать запрос в БД по добавленном данным и таким образом определять таблицу, в которую были добавлены данные... Вся задача в том, какой запрос надо делать... Допустим, если я знаю, что только что добавил строку "string", то запрос должен быть вроде "SELECT "string" FROM "все таблицы". Но это, так сказать, образно... А как на самом деле должен выглядеть запрос....
Заранее спасибо!!

Приложение:
Пример: БД - bazaТаблицы - table1, table2, и т.д.строка - stringКак найти эту строку во всей таблице???

Обсуждение

Неизвестный
06.02.2007, 17:05
общий
а версия сервера и имя ? ^_^ в студиюк примеру oracle (я сомневаюсь, что вы с ним работаете, но допустим, с ораклом у вас были бы другие, совсем другие вопросы) хранит дополнительную информацию в системной области, откуда через представления можно многое узнатьи по вашему вопросу можно предложить много чего нетривиального ))) вплоть до чтения каталога файлов данных и определение вставки по размеру файла
Неизвестный
06.02.2007, 17:17
общий
ОЙ! Извините! Поторопился... мускуль.... И найти естесссно не в таблице, а во всей базе.... Пардон.... :-)
Неизвестный
06.02.2007, 17:22
общий
это ответ
Здравствуйте, WolandV!

1) Разоаботчика ЭТОЙ БД повесить за .....
2) Эти проблемы решаются при создании БД - другим способом нельзя.
3) Одним запросом выбрать строку из ВСЕХ таблиц нельзя, но как правило можно получить списой таблиц в БД и последовательно перебрать все таблицы:

Select * from Table1 where field="string";
Select * from Table2 where field="string";
.....

В Firebird список таблиц лежит в таблице RDB$Relations, в других БД нужно искать что-нибудь подобное.
Следует учесть, что строка таблицы и строка поиска не одно и тоже. И часто при вставке текстовой строки в таблицу добавляется целое число (идентификатор) - как при этом искать?
Выход - проанализировать структуру БД и модернизировать, добавив протоколирование операций.
Неизвестный
06.02.2007, 20:24
общий
я бы вам посоветовала всё же изучить код, если у вас есть исходники, это вам больше поможет - а именно ориентируйтесь на точки получения и вставки входящих переменных, обычно всё само-собой разумеется
Неизвестный
06.02.2007, 20:51
общий
это ответ
Не, если Вы добавляете запись в таблицу, то это запрос INSERT a не SELECT
поэтому попробуйте найти именно это волшебное слово

Неизвестный
06.02.2007, 21:45
общий
это ответ
Здравствуйте, WolandV!
Действительно с вопроса трудно понять, какая БД. Попробуйте воспользоваться таким вот инструментом: IBExpert. Если ваш сервер поддерживается этой программой, попробуйте включить протоколирование изменений. Прога русифицированная, бесплатная.
http://www.ibexpert.com/rus/
Неизвестный
06.02.2007, 23:30
общий
это ответ
Здравствуйте, WolandV!
select table1.string,table2 from table1,table2 ... ( ... where table1.string="ASD")

или
select string from table1
union
select string from table2
Форма ответа