Tsql 创建在其他两个表之间具有多对一关系的新表sql server management studio

Tsql 创建在其他两个表之间具有多对一关系的新表sql server management studio,tsql,sql-server-2008,ssms,Tsql,Sql Server 2008,Ssms,我有两个表,一个表有rowguid列,另一个表有自动递增列,但两个表都没有主键或外键。我想创建第三个表来存储上述两个表之间的关系。有人能给我一个正确的最简单的方法吗。我是新使用sql server的。请回复我首先,您需要打电话了解这些表格之间的关系。必须有一些业务/逻辑规则才能做到这一点,这将是最初的关联 然后你可以试试类似的东西 DECLARE @TableGuid TABLE( GuidID UNIQUEIDENTIFIER DEFAULT NEWID(),

我有两个表,一个表有rowguid列,另一个表有自动递增列,但两个表都没有主键或外键。我想创建第三个表来存储上述两个表之间的关系。有人能给我一个正确的最简单的方法吗。我是新使用sql server的。请回复我

首先,您需要打电话了解这些表格之间的关系。必须有一些业务/逻辑规则才能做到这一点,这将是最初的关联

然后你可以试试类似的东西

DECLARE @TableGuid TABLE(
        GuidID UNIQUEIDENTIFIER DEFAULT NEWID(),
        Val VARCHAR(10)
)

DECLARE @TableID TABLE(
        ID INT IDENTITY(1,1),
        Val VARCHAR(10)
)

INSERT @TableGuid (Val) SELECT 'A'
INSERT @TableID (Val) SELECT 'A'

SELECT * FROM @TableGuid
SELECT * FROM @TableID

DECLARE @TableManyMany TABLE(
        GuidID UNIQUEIDENTIFIER,
        ID INT,
        PRIMARY KEY(GuidID, ID)
)

INSERT INTO @TableManyMany
SELECT  GuidID,
        ID
FROM    @TableGuid g INNER JOIN
        @TableID i ON g.Val = i.Val

SELECT  *
FROM    @TableManyMany

Amby,除了通过脚本,不要对数据库做任何事情。使用GUI界面是一种非常糟糕的做法,您需要立即改掉这个习惯。您需要脚本中的东西,以便将它们放在源代码管理中,并使用它们部署到其他服务器

从来没有,我的意思是,从来没有,有一个没有主键的表。这是数据库设计的第一天。如果你没有主键,你至少有一个唯一的索引吗?如果没有,您可以得到重复的值,这是不好的。任何没有唯一标识行的方法的表都会被破坏。在你再往前走之前把它修好


您还需要某种方法来确定两个表之间的关系。您如何知道表A中的哪个记录与表B中的哪个记录相匹配?因为您有两种不同的数据类型,所以这不是关系,所以您需要在两个表中具有相同的其他字段(或字段组合)来构建关系。如果你没有,那么这段关系的基础是什么。请在两个表中显示示例数据,并在桥接表中显示所需的数据。我相信你还没有根据你发布的内容充分考虑桌子的设计

谢谢你的回复。这是tsql吗?因为我不能理解这里的一些语法。像INSERT@TableGuid(Val)一样,选择“A”。你能解释一下吗?对于多对一的关系,我还需要内部连接吗?在ManagementStudio中也有一种简单的方法可以做到这一点吗?这是TSQL,@TableGuid是一个可以声明的表变量。如果在ManagementStudio中运行此操作,您将看到结果。另外,向我们展示一些细节/示例数据,以便我们更好地了解您的模式/数据结构以及预期的输出应该是什么。这将帮助我们帮助您()X-)