Левое соединение - nvarchar / bigint

Я нахожусь на последней стадии создания отчета и столкнулся с этой ошибкой:

Ошибка преобразования типа данных nvarchar в bigint.

Я подозреваю, что это связано с LEFT JOIN, которое я использую, я просто пытаюсь получить поле Label из этой таблицы, ничего больше.

  LEFT JOIN [taxonomies_taxonomy_entry]
  ON [era_account_details].[sector] = [taxonomies_taxonomy_entry].[taxonomyentryid]

 [taxonomies_taxonomy_entry].[label] AS [Industry]

Я пытаюсь выбрать поле метки, которое является полем nvarchar.

ЛЕВОЕ СОЕДИНЕНИЕ использует:
[era_account_details]. [Сектор] = nvarchar
[taxonomies_taxonomy_entry]. [Taxonomyentryid] = bigint

Любой совет?

Большое спасибо,


person Justin    schedule 07.10.2015    source источник
comment
Почему они разные?   -  person Caramiriel    schedule 07.10.2015
comment
Я понятия не имею; Я не проектировал базу данных :(   -  person Justin    schedule 07.10.2015
comment
Вам нужно будет преобразовать один тип в другой с помощью CAST или CONVERT. Однако это предотвратит использование оптимизатором каких-либо индексов. Это будет медленный запрос. Если sector должен содержать только целочисленные значения (и не содержит мусора), вы можете преобразовать его в bigint. Другой вариант - добавить индексированный столбец nvarchar в taxonomies_taxonomy_entry со строковым представлением идентификатора. Все еще некрасиво, но вам не нужно обновлять существующие данные   -  person Panagiotis Kanavos    schedule 07.10.2015
comment
Спасибо за совет, Панайотис, количество записей, собранных, в частности, по этому запросу - 2751 :)   -  person Justin    schedule 07.10.2015


Ответы (1)


Может ли это помочь?

CAST([taxonomies_taxonomy_entry].[taxonomyentryid]  As nvarchar(500))
person Joakim M    schedule 07.10.2015
comment
ЭПИЧЕСКИЙ ЭТО ТОЛЬКО ПРЕДСТАВИЛ! - person Justin; 07.10.2015
comment
Обратите внимание, что это операция над столбцом / значением, поэтому это делает ее довольно дорогой. Но если вам не разрешено изменять базу данных, это почти все, что вы можете сделать. - person Caramiriel; 07.10.2015