Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помощь в запросе с обновлением данных в 2 таблицах / 7 сообщений из 7, страница 1 из 1
05.03.2019, 00:12
    #39782285
lex871
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в запросе с обновлением данных в 2 таблицах
Друзья, подскажите пожалуйста, как можно проще проапдейтить единым значением разные данные
у меня есть гости с id 99,98, 76, и т.д. - просто набор данных, в последовательность не заложить
и вот надо всем этим значениям из таблицы Accessor присвоить значение 20 в таблице Abstract с синхронизацией по id
как то можно это реализовать через временные таблицы, или через массив?
Я пока пишу для каждой операции данный запрос:

Код: sql
1.
2.
UPDATE Abstract SET Value = 20
WHERE Id = (SELECT Id FROM Account WHERE AccountId = (SELECT Id FROM Account WHERE AccountableId = (SELECT Id FROM Accessor WHERE Ext = '99')))
...
Рейтинг: 0 / 0
05.03.2019, 00:52
    #39782293
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в запросе с обновлением данных в 2 таблицах
lex871,

В простейшем случае ваши вложенные подзапросы переписываются так, но Вам бы неплохо пример структуры хранения данных предоставить.
Код: sql
1.
2.
3.
4.
5.
6.
update t
   set Id = 20
  from Abstract t
      join Account a on a.[Id] = t.[Id]
          join Account a2 on a2.[Id] = a.[AccountId]
              join Abstract t2 on t2.[Id] = a2.[AccountableId] and t2.[Ext] = '99'
...
Рейтинг: 0 / 0
05.03.2019, 00:58
    #39782294
lex871
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в запросе с обновлением данных в 2 таблицах
felix_ff спасибо за ответ.
У меня вопрос, как можно сделать так, чтобы не писать
300 таких запросов, а как-нить Ext - сделать циклом по какой-то таблице....
т.е. чтобы перечислить Ext 99, 76, 55 и т.д. и одним запросом их все обновить....

Код: sql
1.
2.
3.
4.
5.
6.
UPDATE Abstract SET Value = 20
WHERE Id = (SELECT Id FROM Account WHERE AccountId = (SELECT Id FROM Account WHERE AccountableId = (SELECT Id FROM Accessor WHERE Ext = '99')))
UPDATE Abstract SET Value = 20
WHERE Id = (SELECT Id FROM Account WHERE AccountId = (SELECT Id FROM Account WHERE AccountableId = (SELECT Id FROM Accessor WHERE Ext = '76')))
UPDATE Abstract SET Value = 20
WHERE Id = (SELECT Id FROM Account WHERE AccountId = (SELECT Id FROM Account WHERE AccountableId = (SELECT Id FROM Accessor WHERE Ext = '55')))
...
Рейтинг: 0 / 0
05.03.2019, 23:08
    #39782734
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в запросе с обновлением данных в 2 таблицах
lex871300 таких запросов, а как-нить Ext - сделать циклом по какой-то таблице....
т.е. чтобы перечислить Ext 99, 76, 55 и т.д. и одним запросом их все обновить....Этот список Ext у вас откуда берётся? Из таблицы?
Тогда делаете апдэйт с джойном к этой таблице.
...
Рейтинг: 0 / 0
06.03.2019, 00:20
    #39782746
lex871
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в запросе с обновлением данных в 2 таблицах
alexeyvglex871300 таких запросов, а как-нить Ext - сделать циклом по какой-то таблице....
т.е. чтобы перечислить Ext 99, 76, 55 и т.д. и одним запросом их все обновить....Этот список Ext у вас откуда берётся? Из таблицы?
Тогда делаете апдэйт с джойном к этой таблице.
У меня эти данные не в таблице. Их просто в файлике присылают. Можно ли как-нить временную таблицу создать и перебирать данные? Или массивом через запятую?
...
Рейтинг: 0 / 0
06.03.2019, 01:11
    #39782751
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в запросе с обновлением данных в 2 таблицах
lex871,

Код: sql
1.
2.
3.
4.
5.
6.
update t
   set Id = 20
  from Abstract t
      join Account a on a.[Id] = t.[Id]
          join Account a2 on a2.[Id] = a.[AccountId]
              join Abstract t2 on t2.[Id] = a2.[AccountableId] and t2.[Ext] in ('99', '76', '55')


если у вас Ext уникальные значения. иначе вся ваша логика посыпится ошибками
...
Рейтинг: 0 / 0
06.03.2019, 15:03
    #39783022
lex871
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помощь в запросе с обновлением данных в 2 таблицах
felix_ff,
спасибо. А если я сделаю новую таблицу временную где будет такая структура
idEXT165156165996546465447634354654455
то в запросе как надо поправить "in ('99', '76', '55')"
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помощь в запросе с обновлением данных в 2 таблицах / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]