sql |
您所在的位置:网站首页 › sql查询外键 › sql |
我有一个带有很多表的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 |