Конфликт сортировки подзапросов SQL Server

Мой сервер Latin1_General_CI_AS

Моя база данных Latin1_General_CI_AS

Моя таблица Latin1_General_CI_AS

Моя колонка Latin1_General_CI_AS

Мой запрос:

SELECT Product, [Bradken Part Number], Drawing,
   (SELECT TOP (1) Location FROM dbo.Events_Table AS e WHERE
   (Product = dbo.JobSummaryView1.Product) 
   ORDER BY DateTime1 DESC) AS Expr1
FROM dbo.JobSummaryView1

Но когда я запускаю этот запрос, он говорит, что существует конфликт сопоставления между SQL_Latin1_General_CP1_CI_AS и Latin1_General_CI_AS!

Как это может быть? Я предполагаю, что подзапрос использует SQL_Latin1_General_CP1_CI_AS, но почему?

Я знаю, что мог бы исправить это, указав параметры сортировки в SELECT, но я бы предпочел предотвратить это.

Я использую SQL Server Express 2014.


person Treva26    schedule 16.05.2017    source источник
comment
Даже системная база данных tempdb говорит, что это Latin1_General_CI_AS.   -  person Treva26    schedule 16.05.2017
comment
Похоже, ваш дизайн БД имеет некоторую несогласованность сортировки.   -  person jarlh    schedule 16.05.2017


Ответы (3)


попробуй это.

...WHERE fieldname COLLATE DATABASE_DEFAULT = otherfieldname COLLATE DATABASE_DEFAULT
person SynozeN Technologies    schedule 16.05.2017
comment
Да, я знаю, что могу это сделать. Мой вопрос: зачем мне это нужно, если для начала все настроено на одно и то же сопоставление? - person Treva26; 16.05.2017
comment
Сопоставления необходимы и используются при упорядочении и сравнении строк. Вы можете проверить, какие сопоставления имеет каждый столбец в ваших таблицах, используя этот запрос: SELECT col.name, col.collation_name FROM sys.columns col WHERE object_id = OBJECT_ID('YourTableName') - person SynozeN Technologies; 16.05.2017
comment
Из очереди на проверку. Могу я попросить вас добавить контекст к вашему ответу. Ответы, содержащие только код, трудно понять. Если вы добавите больше информации в свой пост, это поможет как автору вопроса, так и будущим читателям. - person RBT; 16.05.2017

Ах извини мой плохой ..

Присоединяемое представление относится к другой базе данных, которая на самом деле является SQL_Latin1_General_CP1_CI_AS.

Я добавил COLLATE в это представление, и теперь мне не нужны COLLATES в опубликованном мной запросе.

Извините :$

person Treva26    schedule 16.05.2017

Ответить

Если вы можете диагностировать представление. Условия "Product = dbo.JobSummaryView1.Product" должны иметь отдельные параметры сортировки.

person Rohit Kumar    schedule 16.05.2017
comment
@treva26 Пожалуйста, проверьте. - person Rohit Kumar; 16.05.2017