Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

вопрос по SQL   Найти похожие ветки 

 
dr   (2002-03-21 16:35) [0]

Как в SQL в бд записать одно из нескольких значений в зависимости от значения другого поля. Что-то вроде
update db
set field2 (if field1 = "1" then "one")


 
SVM   (2002-03-21 16:43) [1]

А смотря какая база. В общем случае все выглядит примерно так:
set field2=a*boolean(field1=1)

field2=a, если field1=1, иначе field2=0.

В Access есть функция iif.


 
dr   (2002-03-21 17:03) [2]

чего-то не работает set field2=a*boolean(field1=1) - invalid use of keyword
база - dbase


 
Johnmen   (2002-03-21 17:17) [3]

update db
set field2="one" where field1 = "1"
... и т.д. и т.п....


 
dr   (2002-03-21 18:03) [4]

update db set field2="one" where field1 = "1" работает, но в 1 запросе получается сделать это только 1 раз. А как сделать много where в 1 запросе?
никак не получается разобраться


 
Johnmen   (2002-03-21 18:07) [5]

А какая БД ?


 
dr   (2002-03-21 18:10) [6]

база - dbase


 
MAxiMum   (2002-03-21 18:14) [7]

Не самое лучшее в плане простоты. Но со стороны эффективности (скорости работы) - напиши хранимую процедуру. Там можно использовать средства, похожие на Case в Object Pascal"е.


 
Johnmen   (2002-03-21 18:15) [8]

Боюсь в одном не получится !


 
dr   (2002-03-21 18:17) [9]

Значит в одном запросе всё сделать нельзя? Жаль...
А как примерно должна выглядеть эта процедура?


 
Johnmen   (2002-03-21 18:23) [10]

Каким-либо образом перебираешь значения field1 и выполняешь для каждого update db set field2="..." where field1 = "..."



 
SVM   (2002-03-21 19:19) [11]

Можно что-то вроде:

update table
set field2=cast(cast(field1-5 as boolean) as float)+7

если field1=5, то оно становится равным 7,
иначе 8.
(field1, field2 - float, dbf, LocalSQL)


 
Bachin   (2002-03-21 19:30) [12]

ну спросили ведь! какой сервер?

MSSQL, Informix, Oracle:

field2 = decode(field1, exp1, val1, exp2, val2, elseval)

либо
case
exp1 then val1
.....


 
wicked   (2002-03-21 21:16) [13]

2 Bachin ©
сказали ж - dBase....


 
Fay   (2002-03-22 01:19) [14]

А зависимость значения одного поля от другого - это правильно?


 
DiggerAbstract   (2002-03-22 04:38) [15]

CASE WHEN FIELD1="1"
THEN "ONE"
ELSE "что-то тут можно написать"
END


 
dr   (2002-03-22 10:58) [16]

Никак не получается заставить работать этот запрос.
далаю примерно так:
update db
set
field2 = case (field1 = exp1) then val1
(field1 = exp2) then val2
end
Обычно пишет Invalid use of keyword. Ругается на (field1 = exp1) Перепробовал делать по-всякому - ну никак не идёт.


 
DiggerAbstract   (2002-03-22 13:39) [17]

пардон - а оператор WHEN тебе не нужен?


 
Val   (2002-03-22 13:50) [18]

>DiggerAbstract (22.03.02 04:38)
это что, запрос для Dbase?


 
Val   (2002-03-22 13:52) [19]

>dr
делайте обычный динамический запрос с параметрами, а case используйте паскалевский


 
DiggerAbstract   (2002-03-22 14:06) [20]

update table set
field1=(case when field1<10
then 0
else 100
end)
where ....



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
14-32979
Стас
2002-03-04 08:32
2002.04.11
Исходники для работы с dBASE в Паскале


1-32760
minerinfg
2002-03-30 19:59
2002.04.11
Помогите новичку


1-32736
vampire
2002-03-23 20:15
2002.04.11
Панелька в стиле AtGuard


14-32963
Blackweber
2002-03-03 01:25
2002.04.11
AND&OR


14-32939
vbazik
2002-03-02 01:47
2002.04.11
Совет по DualHeard video





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский