Форум: "Базы";
Текущий архив: 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