你能帮忙让选择查询列出所有相关表到另一个表的 PK/FK)
我有3张桌子,
Table1
包含cust_ID
(PK)和其他2张桌子(table2
和table3
)有一个FK到Table1
。
需要使用约束来过滤所有相关表并在输出中列出特别列出表 2 和表 3 中的参考表和参考列 - 可能在生产中列出所有相关表和列(以百万为单位)
无法获取 2 列参考表和参考列(完整列表)。
你能帮忙列出所有基于另一个表的另一个主键的外键表和列吗
主键(在
table1
中)应该列出外键(在Table2
和Table3
中)及其表名和列名。
表1
客户ID | cust_Name |
---|---|
10001 | 约翰 |
10002 | 彼得 |
10003 | 史蒂夫 |
10004 | 迈克 |
10005 | 罗布 |
表2
cust_ID_bk | cust_Pay |
---|---|
10001 | 10 |
10002 | 20 |
表 3
cust_ID_sk | cust_Phone# |
---|---|
10001 | 1234567890 |
10002 | 2023456789 |
10003 | 5678904345 |
预期产出
CONSTRAINT_Name | CONSTRAINT_Type | TABLE_NAME | 列名 | 参考表 | 参考专栏 |
---|---|---|---|---|---|
SYS_12345 | 主键 | 表1 | 客户ID | 表2 | cust_ID_bk |
SYS_12345 | 主键 | 表1 | 客户ID | 表 3 | cust_ID_sk |
我尝试使用以下查询,但无法获取参考表和参考列
select
a.CONSTRAINT_NAME, a.CONSTRAINT_TYPE, a.TABLE_NAME,
b.COLUMN_NAME, b.Reference Table, b.Reference Column
from
INFORMATION_SCHEMA.TABLE_CONSTRAINTS a,
INFORMATION_SCHEMA.KEY_COLUMN_USAGE b
where
a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
and a.table_name = 'Table1'
select a.CONSTRAINT_NAME,a.CONSTRAINT_TYPE,a.TABLE_NAME,b.COLUMN_NAME,object_name(fkc.referenced_object_id) Reference_Table,col.name Reference_Column from
INFORMATION_SCHEMA.TABLE_CONSTRAINTS a inner join information_schema.KEY_COLUMN_USAGE b
on a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
Left join sys.foreign_key_columns fkc
on a.CONSTRAINT_NAME=object_name(fkc.constraint_object_id)
left JOIN sys.columns AS col
ON fkc.referenced_object_id = col.object_id AND fkc.referenced_column_id = col.column_id
where a.table_name = 'geographicalhierarchy'