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

Откуда:
Сообщений: 4
Доброго времени суток! С sql работаю не так много, а тут встал вопрос о перенесении штрихкодов из одной базы в другую, где условие выборки будет по идентичному наименованию и заводу производителю.
Накропал скрипт :

update БАЗА1.dbo.TMC
set БАЗА1.dbo.TMC.ScanCod = 
  (select top 1 БАЗА2.dbo.TMC.ScanCod
   from БАЗА2.dbo.TMC
   where БАЗА2.dbo.TMC.Name= БАЗА1.dbo.TMC.Name and БАЗА2.dbo.TMC.CodFactory=БАЗА1.dbo.TMC.СodFactory
)

Поле ScanCod, как в первой, так и второй базе имеет тип varchar(13), не разрешает значение null.
При выполнении скрипта возникает ошибка

Сообщение 515, уровень 16, состояние 2, строка 1
Не удалось вставить значение NULL в столбец "ScanCod", таблицы "БАЗА1.dbo.TMC"; в столбце запрещены значения NULL. Ошибка в UPDATE.


Если разрешить в Базе 1 полю ScanCod значение null, то скрипт проходит, и в во многих полях где условие выборки не соответствует встает null. А это как я понимаю неправильно для нормализации?

Не подскажите выход из ситуации
22 окт 09, 08:44    [7821411]     Ответить | Цитировать Сообщить модератору
 Re: Перенесение штрихкодов из одной базы в другую!  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Почему не правельно? Всё нормуль-ставте NULL
22 окт 09, 08:50    [7821432]     Ответить | Цитировать Сообщить модератору
 Re: Перенесение штрихкодов из одной базы в другую!  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
mehos,

просто Вы апдейтите ВСЮ таблицу БАЗА1.dbo.TMC.
А в ней есть записи, которых нет в БАЗА2.dbo.TMC.
Вот для них-то и получается NULL!

Можно, например, добавить условие WHERE
update БАЗА1.dbo.TMC
set БАЗА1.dbo.TMC.ScanCod = 
  (select top 1 БАЗА2.dbo.TMC.ScanCod
   from БАЗА2.dbo.TMC
   where БАЗА2.dbo.TMC.Name= БАЗА1.dbo.TMC.Name and БАЗА2.dbo.TMC.CodFactory=БАЗА1.dbo.TMC.СodFactory
)
where exists
(
  select * from БАЗА2.dbo.TMC
   where БАЗА2.dbo.TMC.Name= БАЗА1.dbo.TMC.Name and БАЗА2.dbo.TMC.CodFactory=БАЗА1.dbo.TMC.СodFactory
)
Что делать с "лишними" заприсями в БАЗА1.dbo.TMC - решать Вам
22 окт 09, 08:53    [7821444]     Ответить | Цитировать Сообщить модератору
 Re: Перенесение штрихкодов из одной базы в другую!  [new]
mehos
Member

Откуда:
Сообщений: 4
iap
mehos,

просто Вы апдейтите ВСЮ таблицу БАЗА1.dbo.TMC.
А в ней есть записи, которых нет в БАЗА2.dbo.TMC.
Вот для них-то и получается NULL!

Можно, например, добавить условие WHERE[src]update БАЗА1.dbo.TMC
D


Спасибо большое, получилось!)))
22 окт 09, 09:10    [7821515]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить