yegnele46 Ответов: 4

Ошибка преобразования сообщение об ошибке при попытке объединить таблицы


Я получаю это сообщение об ошибке '
'Conversion failed when converting the nvarchar value 'US' to data type int.'


Когда я пытаюсь объединить две таблицы, используя приведенный ниже код

select p.[ProductID], s.[CountryRegionCode]
FROM [Production].[Product] as p, [Sales].[SalesTerritory] as s
where s.CountryRegionCode = p.ProductID


Может ли кто-нибудь понять, почему

Что я уже пробовал:

select p.[ProductID], s.[CountryRegionCode]
FROM [Production].[Product] as p, [Sales].[SalesTerritory] as s
where s.CountryRegionCode = p.ProductID

4 Ответов

Рейтинг:
2

Maciej Los

Сообщение об ошибке совершенно очевидно...

Я подозреваю, что
s.CountryRegionCode это тип nvarchar ('US')
p.ProductID is type от int (1, 2, ...)
что приводит к тому, что эти данные несопоставимы!

Таким образом, чтобы иметь возможность объединять данные, вы должны использовать поля с одним и тем же типом данных.

Кстати: у вас есть польза Присоединяется[^], вместо WHERE заявление! Для получения более подробной информации, пожалуйста, смотрите: Визуальное представление SQL-соединений[^]


MadMyche

+5

Maciej Los

Спасибо.

Рейтинг:
1

MadMyche

Ошибка не требует объяснений; вы пытаетесь сравнить 2 значения, которые отличаются друг от друга тип данных, первый-это символьная строка, а второй-целое число.

Проблема, скорее всего, в вашем WHERE пункт, изложенный ниже.

SELECT p.ProductID
     , s.CountryRegionCode

FROM   Production.Product   as p
   ,   Sales.SalesTerritory as s

WHERE  s.CountryRegionCode   -- Most likely 2 letters 'US'
    =  p.ProductID           -- Most likely a number


Maciej Los

5ed!

Рейтинг:
1

ishan_shah

Вы также можете выполнить его следующим образом :

SELECT Production.Product.ProductID
     , Sales.SalesTerritory.CountryRegionCode

FROM   Production.Product   
   ,   Sales.SalesTerritory 

WHERE  Sales.Sales.CountryRegionCode 
    =  Production.Product.ProductID 


Maciej Los

Нет, не хочет!
Пожалуйста, внимательно прочтите сообщение erorr, опубликованное OP.

Рейтинг:
0

Tony Hill

Your problem is because the s.CountryRegionCode is a nvarchar datatype and you are trying to compare it p.ProductID which is an int.

You are trying to compare a string to a number which cannot be done, SQL attempted to implicitly convert 'US' to a int but failed because it is not a integer number.

I have to wonder how a product id actually relates to a country code which to me seems nonsensical.


Maciej Los

5ed!