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

Откуда:
Сообщений: 197
Доброго времени!
Есть задача: чтобы по клику на DBCheckBox из одной таблицы в другую записывались 3 поля (все 3 соединены между собой связью CONSTRAINT), а если они там уже присутствуют-то обновлялись! По этому поводу нашел инструкцию Merge ( http://technet.microsoft.com/ru-ru/library/bb510625.aspx ) с помощью которой можно реализовать данную задачу!
Не могу разобраться с синтаксисом и как записать условия, при которых таблица Kartochka соединяется с таблицей Montazh для сопоставления!
Вот один из вариантов, но ругается на введенные таблицы-дескать не понимает!
MERGE INTO Montazh AS target USING Kartochka AS source 
ON target.ZavNomer=source.ZavNomer 
WHEN MATCHED THEN
	 UPDATE SET target.Tematika = source.Tematika,target.Naimenovanie=source.Naimenovanie,target.ZavNomer=source.ZavNomer
WHEN NOT MATCHED BY TARGET THEN
	 INSERT ( Tematika,Naimenovanie,ZavNomer )
	 VALUES ( source.Tematika,source.Naimenovanie,source.ZavNomer );

Спасибо за помощь!
17 апр 13, 11:15    [14191171]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а выб свою ссылку почиталиб внимательнейц ,особенно часть с примерами..глядиш и ругаться пересталоб
17 апр 13, 11:19    [14191202]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
Glory
Member

Откуда:
Сообщений: 104760
FOGOT-BAstA
но ругается на введенные таблицы-дескать не понимает!

А можно увидеть оригинальное сообщение сервера ?
17 апр 13, 11:19    [14191208]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
FOGOT-BAstA,

зачем Вы апдейтите ZavNomer там, где они и так совпадают?
ZavNomer - это уникальное поле?
17 апр 13, 11:22    [14191238]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Maxx
а выб свою ссылку почиталиб внимательнейц ,особенно часть с примерами..глядиш и ругаться пересталоб

Можно прямо сказать что не так, потому что я уже вариантов 5 перепробывал-непомогает...
Glory, вот такое сообщение выдает

Сообщение 208, уровень 16, состояние 1, строка 1
Недопустимое имя объекта "Kartochka".

а так практически весь код подчеркнут!
iap, Да, оно в связке с остальными двумя полями является уникальным значением!
делаю так, чтобы не было в дальнейшем исключений при вставке повторяющихся уникальных значений!
17 апр 13, 11:44    [14191420]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
declare @t table (i int, x int)
declare @t2 table (i int, y int)
insert into @t (i,x) values (1, 1), (2,2)

merge @t2 as target
using (select i,x from  @t) as source (i,x)
on (target.i =source.i)
when matched then 
  update set  y = source.x
 when not matched then
  insert (i,y)  
  values (source.i, source.x);
  
  select * from @t2
17 апр 13, 12:01    [14191600]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
FOGOT-BAstA
iap, Да, оно в связке с остальными двумя полями является уникальным значением!
делаю так, чтобы не было в дальнейшем исключений при вставке повторяющихся уникальных значений!
Я спрашиваю про поле, по которому Вы связываете Montazh и Kartochka,
а Вы отвечаете про какую-то связку из нескольких полей!
17 апр 13, 12:13    [14191707]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
iap
FOGOT-BAstA,

зачем Вы апдейтите ZavNomer там, где они и так совпадают?
ZavNomer - это уникальное поле?

Вы спросили про уникальное поле я Вам ответил, что оно им является! Про связь между таблицами вопроса не было!
ZavNomer-не ключевое! У каждой таблицы есть свой ID и они сделаны счетчиками (IDENTITY (1,1))!
Maxx, Огромное спасибо! Сейчас почти разобрался с твоим примером!
17 апр 13, 14:17    [14192828]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
автор
Maxx, Огромное спасибо! Сейчас почти разобрался с твоим примером!

Ну так ведь я и написал -документацию читать надо :)
17 апр 13, 14:27    [14192896]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
FOGOT-BAstA,

да и iap вам совершенно правильный вапрос задал,кстате ,если у вас таблицы джойняться не по ключу
17 апр 13, 14:31    [14192930]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить