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

Откуда:
Сообщений: 740
Ситуация такая.
Имеется 1 большая таблица TABLE_MAIN из, порядка, 8 полей.
Шифр
Pole1
Pole2
...

В ней все поля заполнены информацией.
Мне эту полную информацию нужно ОБНОВЛЕНИЕМ перенести в другие таблицы, которые почти незаполнены (т.к. секретарь не хотел тратить на это время)

Эти самые незаполненные таблицы (Table1 - Table6, где Table1 главная) связаны между собой и если сделать запрос вида

SELECT     
T1.шифр, T1.pole1, T1.pole2, 
T2.pole3, T2.pole4, 
T3.pole5, 
T4.pole6,
T5.pole7,
T6.pole8
FROM
Table1 AS T1 LEFT OUTER JOIN
Table2 AS T2 ON T1.clientId = T2.clientId LEFT OUTER JOIN
Table3 AS T3 ON T1.objectId = T3.objectId LEFT OUTER JOIN
Table4 AS T4 ON T1.otdelId = T4.otdelId  LEFT OUTER JOIN
Table5 AS T5 ON T1.dolgId = T5.dolgId	LEFT OUTER JOIN
Table6 AS T6 ON T1.partnerID = T6.partnerID

то получится такая же структура с теми же полями.
Шифр
Pole1
Pole2
...

только они мало заполнены инфой

Шифр - это то поле по, которому нужно состыковать TABLE_MAIN и поля таблиц Table1 - Table6
т.е. если запись с шифром 1-100-11 из таблицы TABLE_MAIN найдена в Table1 (ведь именно оно только там хранится как в главной из 6-ти таблиц), то нужно данные из полей Pole1, Pole2, ... таблицы TABLE_MAIN обновить во всех таблицах 1-6

Как это можно реализовать. Запросом или программно как-то через временные таблицы?
8 авг 11, 15:13    [11086248]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Уленшпигель
Member

Откуда:
Сообщений: 115
Ольга Семенова
если запись с шифром 1-100-11 из таблицы TABLE_MAIN найдена в Table1


А если не найдена, что произойдет?
8 авг 11, 15:19    [11086286]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Ольга Семенова,

UPDATE ... FROM ...
И так каждую таблицу
8 авг 11, 15:19    [11086288]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Уленшпигель
Member

Откуда:
Сообщений: 115
и явно не хватает структуры таблиц 1-6
8 авг 11, 15:22    [11086318]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
iap
Ольга Семенова,

UPDATE ... FROM ...
И так каждую таблицу


одним апдейтом или как?
8 авг 11, 15:30    [11086391]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
и мне ведь нужно что-то типа сопостовления обновления и поиска по полю ШИФР
8 авг 11, 15:35    [11086440]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
имхо, это типа программист
8 авг 11, 15:40    [11086499]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Ольга Семенова
iap
Ольга Семенова,

UPDATE ... FROM ...
И так каждую таблицу


одним апдейтом или как?
8 авг 11, 15:46    [11086561]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
iap
Ольга Семенова
пропущено...


одним апдейтом или как?


так ведь ключевое поле для поиска-сопоставления есть только в главной таблице Table1
8 авг 11, 15:58    [11086696]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Ольга Семенова
iap
пропущено...


так ведь ключевое поле для поиска-сопоставления есть только в главной таблице Table1

И это мешает вам написать необходимое число апдейтов?
8 авг 11, 16:00    [11086716]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
kDnZP, помогите примером запроса пожалуйста
8 авг 11, 16:08    [11086761]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Ольга Семенова
kDnZP, помогите примером запроса пожалуйста

Легко, при наличие заготовок таблиц (скрипты на создание), ну и десятка тестовых данных. Потому как самому все это писать - лень.
8 авг 11, 16:25    [11086901]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ольга Семенова
помогите примером запроса пожалуйста

BOL - UPDATE - Example C. Using the UPDATE statement with information from another table
8 авг 11, 16:26    [11086912]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
лефтауторович
Guest
Glory
Ольга Семенова
помогите примером запроса пожалуйста

BOL - UPDATE - Example C. Using the UPDATE statement with information from another table


судя по лефт джойнам, хелп нужен по MERGE/INSERT + NOT EXISTS
8 авг 11, 16:55    [11087114]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
лефтауторович
Guest
лефтауторович
судя по лефт джойнам, хелп нужен по MERGE/INSERT + NOT EXISTS


а лефт джойны по id...

и если клиента с таким id в справочнике клиентов нет, то?..
и если отдела с таким id в справочнике отделов нет, то?..

чем заполнять собираетесь? в Main и clientid, и всякие наименования клиента?
8 авг 11, 16:59    [11087136]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
update Table1 set Table1.pole1=TABLE_MAIN.pole1, Table1.pole2=TABLE_MAIN.pole2
from TABLE_MAIN 
Where TABLE_MAIN.шифр=Table1.шифр

update Table2 set Table2.pole3=TABLE_MAIN.pole3, Table2.pole4=TABLE_MAIN.pole4
from TABLE_MAIN LEFT OUTER JOIN Table2 on Table1.clientId=Table2.clientId
Where TABLE_MAIN.шифр=Table1.шифр

update Table3 set Table3.pole5=TABLE_MAIN.pole5 
from TABLE_MAIN LEFT OUTER JOIN Table3 on Table1.objectId=Table3.objectId
Where TABLE_MAIN.шифр=Table1.шифр

update Table4 set Table4.pole6=TABLE_MAIN.pole6 
from TABLE_MAIN LEFT OUTER JOIN Table4 on Table1.otdelId=Table4.otdelId
Where TABLE_MAIN.шифр=Table1.шифр

update Table5 set Table5.pole7=TABLE_MAIN.pole7 
from TABLE_MAIN LEFT OUTER JOIN Table5 on Table1.dolgId=Table5.dolgId
Where TABLE_MAIN.шифр=Table1.шифр

update Table6 set Table6.pole8=TABLE_MAIN.pole8 
from TABLE_MAIN LEFT OUTER JOIN Table6 on Table1.partnerID=Table6.partnerID
Where TABLE_MAIN.шифр=Table1.шифр

так правильно будет? я ничего не напутала? а то придется вешатся если обновлю неправильно мою огромную таблицу
9 авг 11, 10:11    [11089489]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ольга Семенова
а то придется вешатся если обновлю неправильно мою огромную таблицу

А транзакции уже отменили что ли ?
А тестовые таблицы ? Или фразу OUTPUT команды update ?
9 авг 11, 10:15    [11089508]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Ольга Семенова,

а что это за Table1 такая? Почему её нет во FROM?
9 авг 11, 10:19    [11089531]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Glory
Member

Откуда:
Сообщений: 104751
iap
Ольга Семенова,

а что это за Table1 такая? Почему её нет во FROM?

Это "Эти самые незаполненные таблицы (Table1 - Table6, где Table1 главная) " из первого сообщения
9 авг 11, 10:21    [11089543]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Glory
iap
Ольга Семенова,

а что это за Table1 такая? Почему её нет во FROM?

Это "Эти самые незаполненные таблицы (Table1 - Table6, где Table1 главная) " из первого сообщения
Я бы на месте сервера не стал читать первое сообщение
и отказался бы выполнять UPDATEы со 2-го по 6-й!
9 авг 11, 10:32    [11089614]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
не правильные апдейты? в раздел from добавить нужно источник Table1 ?
9 авг 11, 11:07    [11089849]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Ольга Семенова
не правильные апдейты? в раздел from добавить нужно источник Table1 ?

11086912
9 авг 11, 11:14    [11089889]     Ответить | Цитировать Сообщить модератору
 Re: Составление запроса на сумму и проверка на уникальность  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
invm
Ольга Семенова
не правильные апдейты? в раздел from добавить нужно источник Table1 ?

11086912


ну вот сделано как и тут http://msdn.microsoft.com/en-us/library/ms177523.aspx
в пункте A. Using the UPDATE statement with information from another table

объясните что неправильно
9 авг 11, 11:29    [11089989]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
лефтауторович
Guest
Ольга Семенова
не правильные апдейты? в раздел from добавить нужно источник Table1 ?


апдейт сработает если есть строка которую нужно апдейтить в этих ваших Table1-Table6

вы left outer join пишете случайно не для того чтобы проапдейтить строки которых нет?

вот этот селект возвращает строки которые вы хотите проапдейтить?

select *
from TABLE_MAIN INNER JOIN Table2 on TABLE_MAIN.clientId=Table2.clientId
Where TABLE_MAIN.шифр=Table1.шифр

или их возвращает только LEFT OUTER JOIN?
9 авг 11, 11:36    [11090054]     Ответить | Цитировать Сообщить модератору
 Re: Сложное обновление данных нескольких таблиц по ключевому полю  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Ольга Семенова
объясните что неправильно
Только имейте в виду, в Вашу логику обновление я не вникал.
Только по синтаксису: любая таблица должна быть объявлена или во FROM (как правило), либо в UPDATE, либо в INSERT,
либо в DELETE, либо в MERGE.
Любое другое имя таблицы в запросе вообще не допускается.
Покажите UPDATE или FROM из запросов со №2 - №6, в которых объявлена таблица Table1.
9 авг 11, 11:38    [11090067]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить