在事实表中插入几个外键

问题描述

我尝试为名为 FactTable 的表分配外键。您可以看到表格的外观以及包含的数据类型。

enter image description here

在这张表上,我已经为另一个名为 [DIMENSION].[HS] 的表分配了外键。为此,我使用了这行代码

ALTER TABLE FACT.FactTable
    ADD FOREIGN KEY (TenDigits) REFERENCES [DIMENSION].[HS](TenDigits)

到目前为止一切顺利。但是当我尝试将此表与另一个名为 [DIMENSION].Countries 的表连接时出现问题。你可以看到这张桌子的样子

enter image description here

这里我尝试用类似上面代码代码连接这两个表

ALTER TABLE FACT.FactTable
ADD FOREIGN KEY (CountryCodes) 
    REFERENCES [DIMENSION].[Countries] (CountryCodes)

我收到此错误

消息 547,级别 16,状态 0,第 238 行
ALTER TABLE 语句与 FOREIGN KEY 约束“FK__FactTable__Count__1940BAED”冲突。冲突发生在数据库“CustomsDataDW”、表“DIMENSION.Countries”、“CountryCodes”列中。

谁能帮我解决这个问题并在 FACT.FactTable 中再添加一个外键?

这里还要提一下,我可以用这行代码用普通的join命令连接这个表

SELECT *
FROM FACT.FactTable as fa
INNER JOIN [DIMENSION].Countries AS co ON co.CountryCodes=fa.CountryCodes

解决方法

我想提一下,我可以用这行代码用普通的join命令连接这个表

INNER JOIN 仅显示匹配的行。可以通过以下方式识别缺失值:

SELECT DISTINCT fa.CountryCodes
FROM FACT.FactTable as fa
LEFT JOIN [DIMENSION].Countries AS co ON co.CountryCodes=fa.CountryCodes
WHERE co.CountyCodes IS NULL;