使用多个外键连接表

时间:2014-08-12 15:44:47

标签: sql inner-join

考虑到以下SQL查询,我没有返回任何结果。如果我删除其中一个INNER JOIN,则返回与外键关联的数据。

注意DefinitionIDTermID都与PolicyData表的主键def.ID相关。

SELECT def.* FROM [Questions].[dbo].[PolicyDefinitions] def
INNER JOIN [Questions].[dbo].[PolicyData] p 
ON def.ID = p.TermID
INNER JOIN [Questions].[dbo].[PolicyData] pd 
ON def.ID = pd.DefinitionID

是否可以像这样加入表格?

2 个答案:

答案 0 :(得分:1)

您实际上想要使用LEFT JOIN,因为当所有连接的表都有匹配的行时,数据将仅与您的查询一起返回(使用INNER JOIN),快速谷歌(其他搜索引擎是可用;-))将链接到许多文章。

SELECT 
    def.* 
FROM 
    [Questions].[dbo].[PolicyDefinitions] def
    LEFT JOIN [Questions].[dbo].[PolicyData] p ON def.ID = p.TermID
    LEFT JOIN [Questions].[dbo].[PolicyData] pd ON def.ID = pd.DefinitionID

答案 1 :(得分:1)

您也可以只使用OR

进行1次加入
SELECT 
    def.* 
FROM 
    [Questions].[dbo].[PolicyDefinitions] def
    JOIN [Questions].[dbo].[PolicyData] p ON def.ID = p.TermID OR def.ID = pd.DefinitionID