Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка запроса  [new]
Platium
Member

Откуда:
Сообщений: 45
Извините что закрыл предыдущую тему, но не смог разобрать
Есть две базы и таблицы (см. рис.)

Нужно перенести данные с db1.dbo.Direction в db2.dbo.Dim_Direction,

но только те, которых нет в db2.dbo.Dim_Direction

Написал такой запрос

SELECT * FROM db1.dbo.Direction 
WHERE NOT EXISTS 
(SELECT * FROM db2.dbo.Dim_Direction
WHERE db2.dbo.Dim_Direction.Direct_Cod=db1.dbo.Direction .id_direction)

и выдает ошибку
Msg 468, Level 16, State 9, Line 2
Cannot resolve the collation conflict between "Ukrainian_CI_AS" and "Cyrillic_General_CI_AS" in the equal to operation.


К сообщению приложен файл. Размер - 51Kb
18 ноя 11, 12:25    [11619455]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка запроса  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Platium,

у вас разные колейшны, приведите все к одному колейшн при помощи collate. Имейте ввиду, что при этом, если на колоке есть индекс, вы убьете возможность оптимизатора его использовать.
18 ноя 11, 12:33    [11619551]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка запроса  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
Автор, Вам же говорили еще полчаса назад указывать список полей
18 ноя 11, 12:35    [11619568]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка запроса  [new]
Platium
Member

Откуда:
Сообщений: 45
SomewhereSomehow,

а можно более подробно?
18 ноя 11, 12:35    [11619569]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка запроса  [new]
Platium
Member

Откуда:
Сообщений: 45
Паганель,
где говорили?
18 ноя 11, 12:37    [11619578]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка запроса  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Platium,

declare @t1 table (a nvarchar(10) collate Cyrillic_General_CI_AS);
declare @t2 table (a nvarchar(10) collate Ukrainian_CI_AS);
select * from @t1 t1 where exists (select * from @t2 t2 where t1.a = t2.a); -- ошипко
select * from @t1 t1 where exists (select * from @t2 t2 where t1.a = t2.a collate Cyrillic_General_CI_AS); -- Ok
18 ноя 11, 12:41    [11619631]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка запроса  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
Platium
Паганель,
где говорили?
в прошлой теме
18 ноя 11, 12:43    [11619650]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка запроса  [new]
Platium
Member

Откуда:
Сообщений: 45
SomewhereSomehow,

спасибо за помощь
я сделал так


SELECT * FROM db1.dbo.Direction 
WHERE NOT EXISTS 
(SELECT * FROM db2.dbo.Dim_Direction
WHERE db2.dbo.Dim_Direction.Direct_Cod=db1.dbo.Direction .id_direction collate Cyrillic_General_CI_AS)



и все работает!
Еще раз большое спасибо!
18 ноя 11, 12:51    [11619761]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить