Инструмент SQL для вывода списка связанных таблиц в родительскую таблицу
Dears,
Не могли бы вы помочь мне найти инструмент SQL, который покажет мне список таблиц, которые имеют отношение к родительской таблице. Пример:
Выберите * из таблицы_1
когда я пишу объединение, будут перечислены таблицы, связанные с таблицей_1, и после выбора одной из таблиц будет также показано объединение на основе столбцов PK и FK.
Я пробовал SQL Promt, но он перечисляет все объекты, а не только те, к которым я мог присоединиться с таблицей_1.
Я работаю над БД с более чем 300 таблицами, и трудно найти связь между таблицами.
Спасибо!
1 ответ
Этот запрос поможет вам найти таблицы, которые ссылаются на данную таблицу. Вы также можете переделать запрос, чтобы получить обратное, если это необходимо.
SELECT
KCU1.CONSTRAINT_NAME AS FK_CONSTRAINT_NAME
,KCU1.TABLE_NAME AS FK_TABLE_NAME
,KCU1.COLUMN_NAME AS FK_COLUMN_NAME
,KCU1.ORDINAL_POSITION AS FK_ORDINAL_POSITION
,KCU2.CONSTRAINT_NAME AS REFERENCED_CONSTRAINT_NAME
,KCU2.TABLE_NAME AS REFERENCED_TABLE_NAME
,KCU2.COLUMN_NAME AS REFERENCED_COLUMN_NAME
,KCU2.ORDINAL_POSITION AS REFERENCED_ORDINAL_POSITION
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU1
ON KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG
AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2
ON KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG
AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA
AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME
AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION
where KCU2.TABLE_NAME = 'ReferencedTableName'