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

Откуда:
Сообщений: 34
есть такой запрос с использованием двух таблиц.
SELECT b.fm,b.im,b.ot,b.dtr, main_tab
FROM main_tab AS a, lgg AS b
WHERE b.fm = a.fm AND b.im = a.im AND b.ot = a.ot AND b.dtr = a.dat_r

мне надо в найденных записях таблицы LGG в поле main_tab проставить '1'
помогите пожалуйста решить проблему
9 окт 09, 11:26    [7763185]     Ответить | Цитировать Сообщить модератору
 Re: update, в условии используется несколько таблиц  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
UPDATE
  b
SET
  main_tab = '1'
FROM
  main_tab a
  INNER JOIN lgg b ON
  b.fm = a.fm AND 
  b.im = a.im AND
  b.ot = a.ot AND 
  b.dtr = a.dat_r

если версия 2008, то следует использовать MERGE, дабы получить ошибку в случае, если по условиям джоина соответствует более одной записи.

Сообщение было отредактировано: 9 окт 09, 11:30
9 окт 09, 11:29    [7763212]     Ответить | Цитировать Сообщить модератору
 Re: update, в условии используется несколько таблиц  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
???
update
    b
set
    main_tab = '1'
FROM main_tab AS a
inner join lgg AS b on b.fm = a.fm
       AND b.im = a.im
       AND b.ot = a.ot
       AND b.dtr = a.dat_r
9 окт 09, 11:30    [7763217]     Ответить | Цитировать Сообщить модератору
 Re: update, в условии используется несколько таблиц  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
pkarklin
UPDATE
  b
SET
  main_tab = '1'
FROM
  main_tab a
  INNER JOIN lgg b ON
  b.fm = a.fm AND 
  b.im = a.im AND
  b.ot = a.ot AND 
  b.dtr = a.dat_r

если версия 2008, то следует использовать MERGE, дабы получить ошибку в случае, если по условиям джоина соответствует более одной записи.
UPDATE lgg
SET main_tab = '1'
FROM main_tab a
WHERE
  lgg.fm = a.fm AND 
  lgg.im = a.im AND
  lgg.ot = a.ot AND 
  lgg.dtr = a.dat_r
9 окт 09, 11:32    [7763247]     Ответить | Цитировать Сообщить модератору
 Re: update, в условии используется несколько таблиц  [new]
sessy
Member

Откуда:
Сообщений: 34
спасибо огромное!!!!
9 окт 09, 11:35    [7763272]     Ответить | Цитировать Сообщить модератору
 Re: update, в условии используется несколько таблиц  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
iap,

Дело не в том, что в данном конкретном случае по-барабану, сколько записей будет соответствовать и как написать инструкцию, а в самом принципе возможности многозначности соответствия, которое в обычном UPDATE ... FROM ... "замалчивается".
9 окт 09, 11:36    [7763290]     Ответить | Цитировать Сообщить модератору
 Re: update, в условии используется несколько таблиц  [new]
iap
Member

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

Дело не в том, что в данном конкретном случае по-барабану, сколько записей будет соответствовать и как написать инструкцию, а в самом принципе возможности многозначности соответствия, которое в обычном UPDATE ... FROM ... "замалчивается".
Да я без задних мыслей по-другому написал...
Просто таблицу, которую UPDATEим, во FROMе имеет смысл писать, если хотим вместо неё работать с алиасом.

А про MERGE просто согласен
9 окт 09, 11:42    [7763345]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить