使用3个表加入一对多关系

时间:2017-10-31 20:02:39

标签: sql-server-2008 join ssms

下午好 -

我正在努力解决SSMS问题。 (SQL Server 2008)

我需要加入三张桌子。基本上我需要表1和表3中的数据,但需要使用表2将所有数据链接在一起。

表1: 主人ID, 名称

表2: 主人ID, 版本ID

表3: 版本ID, 呼叫

基本上我正在尝试查看表3中的所有行,并包含表1中版本的名称。我正在做的一切,就是给我一个“多部分标识符”xxx“无法绑定。 “

我已经尝试过搜索这些类型的连接,而我对此非常陌生 - 对不起......我无法嵌入我想要完成的截图;但它让我给我的截图链接。我希望有人可以帮助我加入这个联盟,然后灯泡会在我的大脑中继续。提前谢谢。

Requested result

2 个答案:

答案 0 :(得分:0)

看起来很简单,问题是什么?

ANSI 92使用inner joinon语法进行连接。使用似乎是表格的键。

SELECT T1.Name, T3.VersionId, T3.Calls
FROM Table1 T1
INNER JOIN table2 T2
 on T1.MasterID = T2.MasterID
INNER JOIN table3 T3
 on T2.VersionId = T3.VersionID

T1,T2和T3是表别名。

  • INNER JOIN意味着我们只想要记录,如果两者都存在的话 表格
  • t1和t2加入MasterID
  • t2和t3加入VersionID

如果表3包含不在table2中的版本的记录,则可能right加入而不是inner;并且您对table3中所有记录的陈述是正确的。然后需要一个右连接而不是一个内部;但在这种情况下,有些记录没有名字!

答案 1 :(得分:0)

非常简单:

SELECT T3.VersionId, T3.calls, T1.name
FROM Table3 T3
LEFT JOIN TABLE2 T2 ON T3.VERSIONID=T2.VERSIONID
LEFT JOIN TABLE1 T1 ON T1.MASTERID=T2.MASTERID