Вставка нескольких внешних ключей в таблицу фактов

#sql-server #foreign-keys

#sql-сервер #внешние ключи

Вопрос:

Я пытаюсь назначить внешний ключ одной таблицы с именем FactTable . Вы можете увидеть, как выглядит таблица и какой тип данных содержит.

введите описание изображения здесь

В этой таблице я уже назначаю внешний ключ с именем другой таблицы [DIMENSION].[HS] . Для этой цели я использовал эту строку кода

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

Пока все хорошо. Но проблема возникает, когда я пытаюсь соединить эту таблицу с другой таблицей с именем [DIMENSION].Countries . Вы можете увидеть, как выглядит эта таблица

введите описание изображения здесь

Здесь я пытаюсь соединить эти две таблицы с кодом, похожим на приведенный выше код

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

Я получаю эту ошибку:

Сообщение 547, уровень 16, состояние 0, строка 238
Оператор ALTER TABLE конфликтовал с ограничением ВНЕШНЕГО КЛЮЧА «FK__FactTable__Count__1940BAED». Конфликт произошел в базе данных «CustomsDataDW», таблица «ИЗМЕРЕНИЕ.Страны», столбец «Коды стран».

Кто-нибудь может мне помочь, как решить эту проблему и добавить еще один дополнительный внешний ключ в to FACT.FactTable ?

Также здесь я хочу упомянуть, что я могу подключить эту таблицу с помощью обычной команды join с помощью этой строки кода

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

Комментарии:

1. Пожалуйста, не используйте изображения, используйте форматированный текст. Намного аккуратнее и проще для чтения.

Ответ №1:

Я хочу упомянуть, что я могу подключить эту таблицу с помощью обычной команды 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;
 

Комментарии:

1. Я пробую это, и запрос пуст