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

Откуда:
Сообщений: 71
ПРивет,

подскажите пожалуйста синтакс update на несколько полей

у меня такой вот update

update table set attr1,attr2=
(select attr_1, attr_2 from table2
where table2.oid=table.oid)

???

в чем ошибка?
9 дек 04, 13:54    [1170008]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
update table set
attr1 = (select top 1 attr_1 from table2 here table2.oid=table.oid)
attr2=(select top 1 attr_2 from table2 here table2.oid=table.oid)
9 дек 04, 13:57    [1170026]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Бурков
Member

Откуда: Москва
Сообщений: 305
update table set
attr1= (select attr_1 from table2
where table2.oid=table.oid),
attr2= (select attr_2 from table2
where table2.oid=table.oid)

мда...
9 дек 04, 13:57    [1170033]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
update t1 set attr1 = attr_1,attr2=attr_2
from table t1 join table2 on t1.oid=t2.od
9 дек 04, 13:58    [1170036]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
update t set attr1 = attr_1, attr2 = attr_2 from
table t inner join table2 on table2.oid=table.oid
9 дек 04, 13:58    [1170041]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
В синтаксисе.

update 
  table 
set 
  attr1 = table2.attr1,
  attr2 = table2.attr2
from
  table
  INNER JOIN table2 on
  table.oid=table2.oid
9 дек 04, 13:59    [1170043]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
Мысель прет ! ;)
9 дек 04, 13:59    [1170047]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Opla
Member

Откуда:
Сообщений: 71
Мне inner join не подходит никак!!! такой пример я для уточнения написала,
на самом деле все в сто раз сложнее и не все строки в table есть в table2.

мне необходим subselect!!!
9 дек 04, 14:03    [1170069]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
и left outer join вас тоже не устроит?
9 дек 04, 14:04    [1170081]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Glory
Member

Откуда:
Сообщений: 104751
и не все строки в table есть в table2.
И что это должно означать на практике ?
Что должно попасть в table если для ее записи нет соответствия в table2?
NULL ?
9 дек 04, 14:06    [1170090]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
А смысл в subselectе ? установить null в таблицу ??
9 дек 04, 14:06    [1170091]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Opla
Member

Откуда:
Сообщений: 71
спасибо за ответы,

конечно же я не права, inner join подойдет,
теперь меня просто интересует, где ошибка в subselect???
9 дек 04, 14:09    [1170115]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
pkarklin
В синтаксисе.
9 дек 04, 14:11    [1170131]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Opla
Member

Откуда:
Сообщений: 71
сама знаю, что в синтаксе!!!

меня интересует, можно ли несколько полей таким образом изменять.
если да, то как? именно с subselect!!!!!
9 дек 04, 14:14    [1170150]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
Я же вам написал, что вам не нравится ?
9 дек 04, 14:15    [1170159]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Glory
Member

Откуда:
Сообщений: 104751
Opla
сама знаю, что в синтаксе!!!

меня интересует, можно ли несколько полей таким образом изменять.
если да, то как? именно с subselect!!!!!

Можно. Но для этого нужно изучить опять же синтаксис команды UPDATE
9 дек 04, 14:17    [1170172]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Opla
Member

Откуда:
Сообщений: 71
понятно, никто не знает!!!

спасибо еще раз!
9 дек 04, 14:19    [1170189]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Glory
Member

Откуда:
Сообщений: 104751
Opla
понятно, никто не знает!!!

спасибо еще раз!

Может это как раз вы не знаете ?
9 дек 04, 14:22    [1170211]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Opla
сама знаю, что в синтаксе!!!

меня интересует, можно ли несколько полей таким образом изменять.
если да, то как? именно с subselect!!!!!


Что значит с subselect??? На кой ляд он тут нужен??? может вы опишите задачу более подробно.
9 дек 04, 14:23    [1170222]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Iskander68
Member

Откуда: Королев М.О.
Сообщений: 877

Прошу не бить ногами - я с MSSQL только знакомлюсь. Но почему
update T1
set t1.attr1 = t2.attr1, t1.attr2 = t2.attr2
from T1 INNER JOIN t2 on t1.oid=t2.oid

а не

update T1 INNER JOIN T2 on etc...?


-- RegardsAlexander Artamonov

Posted via ActualForum NNTP Server 1.1

9 дек 04, 14:25    [1170244]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Opla
Member

Откуда:
Сообщений: 71
Я же говорю, что благодаря вашему предложению с inner join я решила задачу.
Речь идет теперь просто о том, где была ошибка или невозможно с subselect несколько полей сразу изменить? если хотите, дело просто в принципе, как все-таки синтаксически правильно? нужно это или нет - другой вопрос!
9 дек 04, 14:27    [1170255]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Glory
Member

Откуда:
Сообщений: 104751
Iskander68

Прошу не бить ногами - я с MSSQL только знакомлюсь. Но почему
update T1
set t1.attr1 = t2.attr1, t1.attr2 = t2.attr2
from T1 INNER JOIN t2 on t1.oid=t2.oid
а не
update T1 INNER JOIN T2 on etc...?


Потому что синтаксис такой. Как и в русском языке так и в SQL нельзя писать запросы так как "слышится"(думается). Нужно знать правила "грамматики"
9 дек 04, 14:28    [1170267]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
pkarklin
Member

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

Прошу не бить ногами - я с MSSQL только знакомлюсь. Но почему
update T1
set t1.attr1 = t2.attr1, t1.attr2 = t2.attr2
from T1 INNER JOIN t2 on t1.oid=t2.oid

а не

update T1 INNER JOIN T2 on etc...?


-- RegardsAlexander Artamonov

Posted via ActualForum NNTP Server 1.1


Бить не будем, просто Вас тоже отправим синтаксис инструкции UPDATE изучать.
9 дек 04, 14:29    [1170274]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
to Opla
синтаксически правильно так
Alex Antonoff
update table set
attr1 = (select top 1 attr_1 from table2 here table2.oid=table.oid)
attr2=(select top 1 attr_2 from table2 here table2.oid=table.oid)

Iskander68
может чтоб вам не вздумалось апдейтить строки вместе, из T1 и из Т2
9 дек 04, 14:29    [1170277]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE на несколько полей сразу ???  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Opla
Я же говорю, что благодаря вашему предложению с inner join я решила задачу.
Речь идет теперь просто о том, где была ошибка или невозможно с subselect несколько полей сразу изменить? если хотите, дело просто в принципе, как все-таки синтаксически правильно? нужно это или нет - другой вопрос!


еще раз, объясните, что для вас значит subselect? Это:

update 
  table 
set 
  attr1 = subselect.attr1,
  attr2 = subselect.attr2
from
  table
  INNER JOIN 
  (SELECT oid, attr1, attr2
   FROM Table2) AS subselect on
  table.oid=subselect.oid

???
9 дек 04, 14:32    [1170302]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить