Использование: Oracle SQL Developer
Привет, я пытаюсь объяснить мою проблему на простом примере:

Мне нужен Oracle SQL Query, который возвращает мне все столбцы, связанные с внешним ключом, из всех дочерних таблиц (Table Employee
и Table Building
), которые ссылаются на родительскую таблицу Table Organizational unit
Результат для моего примера будет выглядеть так:
ВЫБРАТЬ Все КОЛОННЫ всех таблиц, в которых есть запись, указанная в качестве внешнего ключа для таблицы Table Organizational unit
ГДЕ Table Organizational unit.Code = 'HR'
--Result
Table Building
ID , ORG_UNIT_REF, Building Type
152, 2 , Main Building
Table Employee
ID, ORG_UNIT_REF, Employee Name
13, 2 , Max Doe
Это означает, что все таблицы с именами таблиц, именами столбцов и содержимым соответствующих столбцов должны быть распечатаны.
Я уже нашел все ссылочные таблицы и имена ограничений, используя этот ответ
SELECT a.table_name, a.column_name, a.constraint_name, c.owner,
-- referenced pk
c.r_owner, c_pk.table_name r_table_name, c_pk.constraint_name r_pk
FROM all_cons_columns a
JOIN all_constraints c ON a.owner = c.owner
AND a.constraint_name = c.constraint_name
JOIN all_constraints c_pk ON c.r_owner = c_pk.owner
AND c.r_constraint_name = c_pk.constraint_name
WHERE c.constraint_type = 'R'
AND a.table_name = :TableName
Для моего примера приведенный выше запрос дает мне что-то вроде этого:
"TABLE_NAME","CONSTRAINT_NAME","STATUS","OWNER"
"Table Employee","FK_CONSTRAINT","ENABLED","TESTSCHEMA"
"Table Building","FK_CONST","ENABLED","TESTSCHEMA"
Теперь я знаю все дочерние таблицы, которые ссылаются на мою родительскую таблицу Organizational unit
. Теперь я также хочу запрос, который выбирает мне все строки во всех таблицах, где совпадает внешний ключ.