sql

您所在的位置:网站首页 sql查询外键 sql

sql

2023-02-28 21:55| 来源: 网络整理| 查看: 265

我有一个带有很多表的SQL Server数据库(几个hundrends),它们彼此之间有某种联系。它们都有主键( GUID ),但只有少数实际定义了外键约束。

我需要在任意列上找到与某个表相关的所有表(让我们称之为TargetTable)直接和不正确地(通过1,2或更多中间表)相关。

我的目标是获取SQL查询(每个相关表一个),在TargetTable和相关表之间加入所有表。

例如:发现5与TargetTable表相关:

TargetTable - 表1 TargetTable - 表1 - 表2 TargetTable - 表3 TargetTable - 表3 - 表4 TargetTable - 表3 - 表4 - 表5

我需要获得5个单独的JOIN。

它有任何SQL查询或软件或实用程序或任何方式来获得所需的SQL代码?或者甚至足以在一些方便的图形中获得关系,这样我就可以用我最喜欢的脚本语言解析它们并生成SQL代码。

最佳答案:

3 个答案:

答案 0 :(得分:3)

你当然可以通过循环遍历information_schema.columns或sys.columns来生成代码,但我怀疑它会像你想的那样工作。

如果他们懒得放入FK,那么他们可能已经做了一些其他可怕的事情......比如没有标准的命名约定或通用表。

您最好不要查看数据库中的SQL查询/过程以查看大多数关系的位置......那么您必须自己决定表是否相关。

答案 1 :(得分:0)

您可以使用SQL Server Management Studio同时拥有带有数据库图表的图表(不理想但有用)https://www.mssqltips.com/sqlservertip/1816/getting-started-with-sql-server-database-diagrams/,您可以使用查询设计器获取SQL并加入(仍在SSMS中)https://www.mssqltips.com/sqlservertip/1086/sql-server-management-studio-query-designer/

希望得到这个帮助,

答案 2 :(得分:0)

您无法仅根据表格推断关系。要做到这一点,您需要了解域名。例如,假设您有两个表,T1包含和int字段X,T2具有int字段Y.然后在T1和T2的行之间存在关系R,其中(r1,r2)在R中当且仅当r1.x = r2.y。

因此,我建议您使用您对域的知识构建模型(例如ER模型)。然后手动添加外键约束。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3