#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. Я пробую это, и запрос пуст