Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2012, 10:26   #1
Blame
Пользователь
 
Регистрация: 24.12.2011
Сообщений: 70
По умолчанию Переприсвоить значения полям по условию

подскажите, пожалуйста, шаблон запроса
Есть одна таблица, Поле 0, Поле 1, Поле 2, Поле 3, Поле 4, Поле 5.

0) Если поле 0 like '123%' то :
1) если (поле 1 < поле 2 и поле 2 < поле 3 ), то в Поле 4 и в Поле 5 перезаписываются пустые значения.
2) если (поле 1 < поле 2 и поле 2 < поле 3 ), то в Поле 4 записывается пустое значение, а Поле 5 остается без изменения.
3) если (поле 1 > поле 2 и поле 2 > поле 3 ), то в Поле 4 и Поле 5 остаются без изменений.
конец условия (0)
конец условий (1 )-(3)

Вообще, возможно ли в существующей таблице переприсваивать новые значения или нужно копировать эту таблицу и создавать новую, а потом уже проводить операции? Я только начала изучать самостоятельно SQL, еще не разбираюсь))
Просто для меня это видится, как манипуляции с обычной таблицей в программировании.
for i =1 to конец столбца
if условие 1 then бла блабла..
end if
а как в SQL, - я не знаю)

Спасибо!
Peace!

Последний раз редактировалось Blame; 21.08.2012 в 10:42.
Blame вне форума Ответить с цитированием
Старый 21.08.2012, 10:41   #2
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Внимательно посмотрите свой пост: чем второе условие отличается от первого?
Необходимо знать какая СУБД используется, т.к. SQL может несколько отличаться в разных.
Karabash вне форума Ответить с цитированием
Старый 21.08.2012, 10:44   #3
Blame
Пользователь
 
Регистрация: 24.12.2011
Сообщений: 70
По умолчанию

Karabash
Простите. Вы правы. Недосмотрела.

Есть одна таблица, Поле 0, Поле 1, Поле 2, Поле 3, Поле 4, Поле 5.

0) Если поле 0 like '123%' то :
1) если (поле 1 < поле 2 и поле 2 < поле 3 ), то в Поле 4 и в Поле 5 перезаписываются пустые значения.
2) если (поле 1 < поле 2 и поле 2 > поле 3 ), то в Поле 4 записывается пустое значение, а Поле 5 остается без изменения.
3) если (поле 1 > поле 2 и поле 2 > поле 3 ), то в Поле 4 и Поле 5 остаются без изменений.
конец условия (0)
конец условий (1 )-(3)

_______________

СУБД MS SQL SERVER 5.
Peace!
Blame вне форума Ответить с цитированием
Старый 21.08.2012, 10:44   #4
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Не написали какую СУБД используете, но в любом случае в ANSI SQL есть оператор Update
astecenko вне форума Ответить с цитированием
Старый 21.08.2012, 10:46   #5
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Цитата:
Сообщение от Blame Посмотреть сообщение
СУБД MS SQL SERVER 5.
Вы уверены?
astecenko вне форума Ответить с цитированием
Старый 21.08.2012, 10:51   #6
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Можно перезаписывать данные в таблицах.
Условия в запросе можно реализовать с помощью выражения CASE или COALESCE
Практически, - это аналог оператора if, но используемых в запросах SQL.

Последний раз редактировалось Karabash; 21.08.2012 в 10:54.
Karabash вне форума Ответить с цитированием
Старый 21.08.2012, 10:59   #7
Blame
Пользователь
 
Регистрация: 24.12.2011
Сообщений: 70
По умолчанию

Karabash.
Знаете, у меня не получается только через case, ибо согласно первому условию в выборку попадают все строки, а мне нужно, что бы манипуляции происходили только с тем данными , у которых Поле 0 like '123%' , а остальные строки игнорировались. Поэтому мне нужен IF или я не понимаю.. (((

astecenko
Немного не поняла, у меня запущен MS SQL SERVER 2005. Мучаю его.
Peace!
Blame вне форума Ответить с цитированием
Старый 21.08.2012, 11:05   #8
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Код:
Знаете, у меня не получается
Понятно, что нужны опыт, навыки.
А есть возможность увидеть эту БД?
Код:
Поэтому мне нужен IF или я не понимаю..
CASE - это и есть IF, только называется по-другому и синтаксис его несколько необычен, но если хорошенько почитать справку и посмотреть примеры (там же), то можно понять работу CASE.
Эти выражения допускают и вложенность. Точно так же как IF.

Последний раз редактировалось Karabash; 21.08.2012 в 11:14.
Karabash вне форума Ответить с цитированием
Старый 21.08.2012, 11:22   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Примерно в таком духе
Код:
UPDATE MyTable
  SET Поле4=CASE WHEN поле1<поле2 THEN NULL ELSE Поле4 END,
      Поле5=CASE WHEN поле1<поле2 AND поле2<поле3 THEN NULL ELSE Поле5 END
  WHERE поле0 like '123%'
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.08.2012, 23:18   #10
Blame
Пользователь
 
Регистрация: 24.12.2011
Сообщений: 70
По умолчанию

Аватар, спасибо за подсказки!
Ребята, спасибо большое всем за помощь! )
На меня нашло творческое вдохновение, и я дописала свой запрос)) с применением CASE) Я просто видела вопрос немного не с той стороны и структуры))))
Еще раз спасибо!!!
Peace!
Blame вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отражение в Textbox значения по условию в Combobox strannick Microsoft Office Excel 5 14.08.2012 10:41
mysql. select значения по нескольким полям freeek SQL, базы данных 6 23.05.2012 18:55
Метод присваивающий значения полям класса anlu Общие вопросы C/C++ 7 17.12.2011 21:38
Перебрать все значения столбца по условию. Aleksandr Общие вопросы Delphi 5 23.06.2011 11:39
Макрос работа по условию изменения значения по ссылке Uralmaster Microsoft Office Excel 9 05.02.2011 16:44