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

update e_pi set
t_alb = (if t_alb = 'Y' then 'P' else t_alb end if),
. . . . . . . . . . .

Кто сталкивался с подобным, рассчитываю на вашу помощь.
22 апр 03, 13:27    [181040]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
ОператорПК
Guest
CASE
22 апр 03, 13:30    [181050]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
Вроде так:


update e_pi set
t_alb = 'p'
where t_alb = 'y'
22 апр 03, 15:10    [181213]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
update e_pi

set t_alb = (case t_alb when 'Y' then 'P') else t_alb end
where ....
22 апр 03, 15:12    [181218]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
Сорри, скобку забыл вынести
update e_pi

set t_alb = (case t_alb when 'Y' then 'P' else t_alb end)
where ....
22 апр 03, 15:13    [181219]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
2 Breakneck

А чем результат

update e_pi

set t_alb = (case t_alb when 'Y' then 'P' else t_alb end)
where ....

будет отличаться от
update e_pi set 

t_alb = 'p'
where t_alb = 'y' and ...


:)
22 апр 03, 16:03    [181281]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
Белов Владимир
Member

Откуда: Москва
Сообщений: 1716
Тем, что в case структуре ты можешь использовать больше "условий" чем в where

У тебя проапдейтятся только те поля которые подходят под условие where...
22 апр 03, 16:06    [181284]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
_Michael_
Guest
2 Белов Владимир:

Тем, что в case структуре ты можешь использовать больше "условий" чем в where

Примерчик можно? Только в рамках первоначального условия.
22 апр 03, 16:23    [181304]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
2_Michael_&alexia: почувствуйте разницу:

update e_pi
set t_alb = (case t_alb when 'Y' then 'P' else t_alb end),
field2 = 2,
field3 = (case field3 when 'Y' then 'P' when 'U' then 'P' else t_alb end),
field4 = (case when field4 = 'Y' or field4 = 'I' then 'P' when 'U' then 'P' else t_alb end)
where ....

Суть в том, что в этом случае Вы можете перечислить сколько угодно простых и сложных условий для поля + апдейтить те записи, которые не попадут под перечисленные условия (where).
22 апр 03, 16:29    [181310]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
2_Michael_: Кстати, если в рамках первоначального условия, то заметьте, что перечень обновляемых полей не был исчерпан:
update e_pi set
t_alb = (if t_alb = 'Y' then 'P' else t_alb end if),
. . . . . . . . . . .
,
что, собственно, и требует запроса с case
22 апр 03, 16:31    [181314]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
Да никто не опровергает достоинств case, просто товарищу "Сломанная Шея" нужно было более развернуто вопрос задать.

:)
22 апр 03, 16:38    [181323]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
Breakneck
Member

Откуда: Kiev
Сообщений: 2454
2alexia: Вопрос был не мой - раз, во-вторых, мой ник переводится как Сорви-Голова :-))
А вопрос был задан более-менее полно. Есть тут и похуже вопросы.
22 апр 03, 16:48    [181334]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
_Michael_
Guest
2 Breakneck:

2_Michael_: Кстати, если в рамках первоначального условия, то заметьте, что перечень обновляемых полей не был исчерпан:
update e_pi set
t_alb = (if t_alb = 'Y' then 'P' else t_alb end if),
. . . . . . . . . . . ,
что, собственно, и требует запроса с case


Позвольте не согласиться за "......" могло стоять следующее выражение:

field2 = (if t_alb = 'Y' then field2+1 else field2 end if)


В рамках заданного вопроса оба ответа одинковы верны и утвержение

case структуре ты можешь использовать больше "условий" чем в where

в данном контексте не совсем корректно.
А угадывать что автор скрыл за ".........." я бы на Вашем месте поостерегся :-)
22 апр 03, 16:54    [181344]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
2 Breakneck

Прошу прощенья! Вопрос был задан devlpr! Это я заработался совсем.
:)
22 апр 03, 16:59    [181346]     Ответить | Цитировать Сообщить модератору
 Re: Джентльмены, как апдейтить таблицу при наличии условий на столбцы?  [new]
alexia
Member

Откуда: Санкт-Петербург
Сообщений: 460
2 Breakneck

За неправильный перевод ника тоже извиняюсь (переводил по словарю). :)
22 апр 03, 17:01    [181352]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить