查找我需要加入的所有表以获得两个表之间的关系

时间:2016-07-29 07:15:27

标签: sql sql-server join sql-server-2012

我正在使用SQL Server 2012.我想加入两个没有列的表,我可以加入它们,如何找到所有表到达这两个表?

例如:我需要加入Table Atable D,为此,我需要将AB连接,然后再连接到C,最后到D

我的问题是:我可以在数据库中的数千个表中找到表BC而无需逐个表搜索吗?

非常感谢, 辖

2 个答案:

答案 0 :(得分:1)

假设:

  1. 您希望自动完成此过程
  2. 您有可以依赖的FOREIGN KEY约束
  3. 您应按以下步骤操作:

    1. 查询sys.foreign_keys并创建一个包含表之间链接的有向图结构。
    2. 然后实现一个图表搜索算法,该算法将从表A开始,并尝试查找表D的路径,从D到A。
    3. 找到路径后,可以很容易地构造包含路径上所有表的连接的动态SQL。您还需要查询sys.foreign_key_columns,以便能够构建JOIN的ON子句。
    4. 如果您需要更多详细信息,请与我们联系。

答案 1 :(得分:0)

您可以采取一些措施来帮助您的事业,但在大多数情况下,没有直接的方法,您需要知道数据库的结构和表格的用途。此外,根据数据库的设计,您可能很难直观地找到答案,而您可能只需要从熟悉数据库设计的人那里获得指导。无论:

表A&中的字段d: 您可以查看表中的主要字段或唯一字段,以确定其他表可以链接到这些表。通常它们以与其他表匹配的方式命名,您可以告诉它们来自哪个表。

Information_Schema观看次数 您可以使用information_schema.tables和information_schema.column视图轻松搜索整个数据库中的表和列的名称,并将搜索范围缩小到更少的表。