如何使用JOIN表示OR表

时间:2014-05-11 14:22:11

标签: sql-server tsql sql-server-2008-r2

我的查询包含4个表Table1Table2Table3Table4

Table1是具有ID的主表 Table2是与Table1有FK关系的子表,并且有一列名为Tag
Table3是与Table1有FK关系的子表,并且有一个名为Code的列 Table4是与Table1有FK关系的子表,其列为Code2

现在我想要一个查询来表示跟随逻辑

Select Table1.ID 
From Table1 ...
WHERE Table2.Tag IN( 1,2,3,4)
      AND ( Table3.Code In (456,789) OR Table4.CODE2 in (123,897) ) 

我知道我可以加入Table1Table2之间的联接,获取Tag(1,2,3,4)中的ID。但我不确定如何加入Table3Table4来达到要求。

1 个答案:

答案 0 :(得分:0)

您只是根据每个子表中的外键列等于Table1的键的条件继续向子表添加连接

你的查询应该是这样的

Select Table1.ID 
From Table1 
JOIN Table2 ON Table2.FK_ID = Table1.ID 
JOIN Table3 ON Table3.FK_ID = Table1.ID 
JOIN Table4 ON Table4.FK_ID = Table1.ID 
WHERE Table2.Tag IN( 1,2,3,4)
AND ( Table3.Code In (456,789) OR Table4.CODE2 in (123,897) ) 

但是用适当的外键字段替换了FK_ID