SQL. Найти всю информацию по связанным таблицам
Задача:
Проверить и найти все таблицы, где используется определенное значение из связанной таблицы. Т.е. есть документы, справочники, которые содержат конкретное значение из связанного справочника.
Решение для СУБД Oracle:
Узнаем все таблицы, в которых есть необходимое нам поле:
Далее, пишем запрос по каждой таблице:
select * from dba_tab_columns where column_name like '%LAWACT_ID';
select TABLE_NAME AS "ТАБЛИЦА",
COLUMN_NAME AS "КОЛОНКА",
'SELECT '''||TABLE_NAME||''''||' AS "Таблица",
count(1) AS "Количество" FROM '||TABLE_NAME||' WHERE '||COLUMN_NAME||' = <необходимый ID> UNION ALL' AS "СКРИПТ"
from dba_tab_columns
where column_name like 'KD_CODE' /*Укажите название поля (колонки) */
--AND OWNER like '<schema_name>'; /*Укажите схему */
Таблица |Количество|
----------------|----------|
AGREEMENT_LAWACT| 0|
AGREEMENT_LAWACT| 0|
BACKORDER | 0|
BUDGORDER | 0|
Аналогичное решение для СУБД Firebird:
SELECT rdb$relation_name AS "Таблица",
rdb$field_name AS "Колонка",
'SELECT '''||TRIM(rdb$relation_name)||''''||' AS "Таблица", count(1) AS "Количество" FROM '||
TRIM(rdb$relation_name)||' WHERE '||TRIM(rdb$field_name)||' = <необходимый ID> UNION ALL' AS "СКРИПТ"
from rdb$relation_fields
where rdb$field_name like '%ORGACCOUNT_ID%' /*Укажите название поля (колонки) */
--AND rdb$relation_name like '<table name>'; /*Укажите таблицу */
Комментарии
Отправить комментарий