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

Откуда:
Сообщений: 100
Как проверить между собой две таблицы на изменение, если таковые имеются, то проапдейтить проверяемую таблицу этими изменениями?
У меня сразу возникли мысли это по строчно курсором выбирать строку, проверять по каждому полю, каждую запись, и всё это в ручную нужно написать, то есть писать нужно кучу кода, таблица на 42 поля и на 20 тысячную кучу записей, и каждому полю нужно определить соответсвующие конверты, LTRIM, RTRIM и т.д. не ужели нет в SQL встроенного механизма на такую рутину?

Может кто реализовывал нечтоподобное и поделится общим алгоритмом?
3 июн 11, 11:06    [10757567]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
volkandrey,

есть встроенный механизм называется update
3 июн 11, 11:08    [10757582]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Это вообще возможно, если есть неизменяемый ключ.
3 июн 11, 11:10    [10757594]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
WarAnt
volkandrey,

есть встроенный механизм называется update

С предварительным DELETE
3 июн 11, 11:10    [10757596]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
Я правильно понял, надо сделать клон?
3 июн 11, 11:11    [10757602]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Anatoly Podgoretsky
WarAnt
volkandrey,

есть встроенный механизм называется update

С предварительным DELETE

тогда уж сразу можно truncate, а потом insert и вуаля две одинаковых таблицы:)
3 июн 11, 11:14    [10757619]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
WarAnt
Anatoly Podgoretsky
пропущено...

С предварительным DELETE

тогда уж сразу можно truncate, а потом insert и вуаля две одинаковых таблицы:)
А TRUNCATE всегда возможен?

Но есть ещё MERGE...

Я правда не понял страдания volkandrey по поводу 42 полей, каких-то LTRIM и RTRIM.
И при чём тут куча записей?

Лучше бы скрипт CREATE TABLE для обеих таблиц здесь написал.
И версию сервера.
3 июн 11, 11:30    [10757773]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62908
А мы даже не знаем какая у него СУБД, он не посчитал нужным нам это сообщить, может у него MS SQL 6.5
3 июн 11, 11:33    [10757787]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
volkandrey
Member

Откуда:
Сообщений: 100
WarAnt
volkandrey,

есть встроенный механизм называется update

Это должно делаться уже после того, когда изменения в проверяемой таблице найдены.

Попробую подробнее описать суть проблемы.
Сервер MSSQL 2008, Две таблицы А, В все поля varchar. Произошли изменения нескольких записей в некоторых полях таблицы А, внести эти изменения в таблицу В, обязательное условие использовать update этих записей. Удалять таблицу В нельзя!
3 июн 11, 16:30    [10760376]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
Gwa
Guest
volkandrey,
>>Может кто реализовывал нечтоподобное и поделится общим алгоритмом?
Не нужно дублировать данные.
Вы этим сами себе создаёте проблемы.
3 июн 11, 16:39    [10760471]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
Using MERGE in SQL Server to insert, update and delete at the same time
6 июн 11, 11:00    [10767970]     Ответить | Цитировать Сообщить модератору
 Re: Как проверить между собой две таблицы?  [new]
Jaffar
Member

Откуда:
Сообщений: 633
если тупо и по даунски то вот так, или если по умному то как по ссылке выше

update t1
set
t1.c1 = t2.c1,
t1.c2 = t2.c2,
t1.c3 = t2.c3,
t1.c4 = t2.c4,
.............
from table1 t1
join table2 t2 on t1.ID = t2.ID and (
t1.c1 != t2.c1
or t1.c2 != t2.c2
or t1.c3 != t2.c3
or t1.c4 != t2.c4
or ..............)
6 июн 11, 12:12    [10768674]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить