![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по условным операторам в SQL Firebird 1.X
Rule © (2004-10-05 12:23:00)Как мне сделать выбор по условию, щас попробую объяснить ...
допустим есть 2 поля
COUNT(numeric(12,3))
TTYPE(CHAR(1)) - принимает 2 значения "+" или "-"
так вот надо сделать запрос типа такого чтоб складывало количество если тип равен плюсу или вычитало если минусу, как такое сделать
ну если в цикле изобразить то получится
while not table1.eof do begin
if table.fields[1].asstring='+' then allcount:=allcount+table.fields[0].asinteger;
if table.fields[1].asstring='-' then allcount:=allcount-table.fields[0].asinteger;
table1.next;
end;
ну так я думаю будет понятно ?
Rule (2004-10-05 17:48:00) [1]sniknik © (05.10.04 17:39) [42]
гут, спасибо за ссылку, читаю ...
sniknik (2004-10-05 17:39:00) [2]не, на самом деле можно "оправдать" выбор ADO, OLEDB, если например "вдруг" понадобится совместить IB c MSSQL.
вот почитай
http://zstyle.dp.ua/eng/iboledb_doc5.htm
Rule (2004-10-05 17:14:00) [3]sniknik © (05.10.04 16:41) [40]
Понятно, спасибо за информацию :)
sniknik (2004-10-05 16:41:00) [4]> А можно сапросить, почему использованы Адошные компоненты доступа а не прямые, по каким соображениям ?
сапросить мошно пуалуачить незя. ;о))
да просто прога писалась как тестилка sql запросов, именно для ADO, вернее для того чтобы ему обучится. (с чего то нужно начинать) в основном для баз acces (задумывалось), получилось для всех (ну я же не виноват что ADO практически все базы поддерживает ;о))
нашлись драйвера под IB вот и тестю на ней же. (привык уже, да и проше это, поменял провайдера, все другая база...)
Rule (2004-10-05 16:30:00) [5]Все понял причину, извините, действительно тороможу, больше не буду сонный постить вопросы :)))
Причина в том что база лежит на другой машине, на сервере, а там фаерберд 1.0, вот так, вот сдесь все и причины :))
а на 1.5 менять не будут потомучто на тойже машине стоит клиент банк или какаято банковская программа ...
ну щас буду решать, надо же переходить на 1.5, щас будем банкиров с сервака сталкивать, ибо нефиг
Rule (2004-10-05 16:27:00) [6]sniknik © (05.10.04 16:26) [37]
А можно сапросить, почему использованы Адошные компоненты доступа а не прямые, по каким соображениям ?
sniknik (2004-10-05 16:26:00) [7]> Да верю, а какие компоненты доступа были использованы ?
ADO (connect, command, dataset) провайдер ZStyle IBOLE Provider (5 бесплатная версия).
Sergey13 (2004-10-05 16:25:00) [8]2[35] Rule © (05.10.04 16:21)
>Опа, я нашел в чем причина, у меня в трее висит фаерберд гуардиан 1.5, а вот в эксперте пишет что база 1.0, как мне её теперь перевести на 1.5 ?
Попробуй поменять в "Регистрационной информации базы"
Rule (2004-10-05 16:21:00) [9]Опа, я нашел в чем причина, у меня в трее висит фаерберд гуардиан 1.5, а вот в эксперте пишет что база 1.0, как мне её теперь перевести на 1.5 ?
Роман Снегирев (05.10.04 16:09) [30]
Извините, не я начальник информационного отдела, я бы давно перешел на них, но увы ... я много раз говорил
Rule (2004-10-05 16:18:00) [10]sniknik © (05.10.04 16:13) [32]
Да верю, а какие компоненты доступа были использованы ?
Rule (2004-10-05 16:17:00) [11]Rule © (05.10.04 16:03) [28]
вернее не поставят а подскажут, уже вообще засыпаю, даже слова путаю :))
sniknik (2004-10-05 16:13:00) [12]Rule © (05.10.04 15:59) [26]
> Sandman25 © (05.10.04 15:58) [23]
> так у меня и есть фаерберд 1.5, наверное это просто IBX вмесие с IBExpert не понимают эту структуру ...
сам фаерберд 1.5, должен... из доки
(1.5) New constructs for CASE expressions
Arno Brinkman
a) CASE
Allow the result of a column to be determined by the outcome of a group of exclusive conditions.
Syntax
<case expression> ::=
<case abbreviation> | <case specification>
<case abbreviation> ::=
NULLIF <left paren> <value expression> <comma> <value expression> <right paren>
| COALESCE <left paren> <value expression> { <comma> <value expression> }... <right paren>
<case specification> ::=
<simple case> | <searched case>
<simple case> ::=
CASE <value expression> <simple when clause>...
[ <else clause> ]
END
<searched case> ::=
CASE <searched when clause>...
[ <else clause> ]
END
<simple when clause> ::= WHEN <when operand> THEN <result>
<searched when clause> ::= WHEN <search condition> THEN <result>
<when operand> ::= <value expression>
<else clause> ::= ELSE <result>
<result> ::= <result expression> | NULL
<result expression> ::= <value expression>
Examples
i) simple
SELECT
o.ID,
o.Description,
CASE o.Status
WHEN 1 THEN 'confirmed'
WHEN 2 THEN 'in production'
WHEN 3 THEN 'ready'
WHEN 4 THEN 'shipped'
ELSE 'unknown status ''' || o.Status || ''''
END
FROM Orders o;
ii) searched
SELECT
o.ID,
o.Description,
CASE
WHEN (o.Status IS NULL) THEN 'new'
WHEN (o.Status = 1) THEN 'confirmed'
WHEN (o.Status = 3) THEN 'in production'
WHEN (o.Status = 4) THEN 'ready'
WHEN (o.Status = 5) THEN 'shipped'
ELSE 'unknown status ''' || o.Status || ''''
END
FROM Orders o;
могу прислать прогу на ADO, на ней влегкую идет (вышеописанные запросы).
Sergey13 (2004-10-05 16:10:00) [13]22[26] Rule © (05.10.04 15:59)
У меня в эксперте на 1.5 запрос из [11] отработал на ура и с подсветкой. 8-)
Роман Снегирев (2004-10-05 16:09:00) [14]так у меня и есть фаерберд 1.5, наверное это просто IBX вмесие с IBExpert не понимают эту структуру ...
IBExpert все отлично понимает, а IBX по х... что ты там пишещь в запросе, выполняет то его все равно сервер, так что все должно работать. А лучше переходи на FIBPlus
Johnmen (2004-10-05 16:04:00) [15]>Rule © (05.10.04 15:59) [26]
>так у меня и есть фаерберд 1.5,
Если FB1.5, то там есть CASE. В IB его нет...
Rule (2004-10-05 16:03:00) [16]Sandman25 © (05.10.04 16:02) [27]
Да ждемс, может другие поставят
Sandman25 (2004-10-05 16:02:00) [17][26] Rule © (05.10.04 15:59)
Понятно. Я не спец, сейчас может другие подскажут.
Sandman25 (2004-10-05 15:59:00) [18]for select работает медленнее, чем select sum
Rule (2004-10-05 15:59:00) [19]Sandman25 © (05.10.04 15:58) [23]
так у меня и есть фаерберд 1.5, наверное это просто IBX вмесие с IBExpert не понимают эту структуру ...
Rule (2004-10-05 15:58:00) [20]а ещё проще хранимую процедуру написать да и все, и никаких удф не надо