Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка по вычислимому полю в TQuery


clarin ©   (2002-03-19 14:24:00) 

Плииииз....помогите советом....Как можно отсортировать таблицу по вычислимому полю в TQuery?


Sergey13   (2002-03-20 09:20:00) [1]

2alexandervasjuk © (19.03.02 16:36)
Зачем городить огород с процедурой если это решается простым запросом. Lusha © абсолютно прав. Запрос может выглядеть примерно так:

SELECT a.key,a.name||nvl(b.name,"")||nvl(c.name,"") all_name
FROM table1 a, table2 b, table3 c
WHERE a.key=b.key(+) AND a.key=c.key(+)
ORDER BY 2

(+) можно не ставить если значения в table2 и table3 гарантировано есть. NVL тоде можно не использовать если значения гарантировано не NULL. Количество таблиц можно отредактировать по необходимости.


clarin   (2002-03-19 16:49:00) [2]

спасибо всем...навели на мысль.....хочу опробовать :)


alexandervasjuk   (2002-03-19 16:36:00) [3]

Клэрин

почему все это нельзя организовать в базе как процедуру и обращаться к ней с order by?


Lusha   (2002-03-19 16:34:00) [4]

Честно говоря я мало что понял кроме того, что вычисляемое поле есть конкатенация некоторых полей из выборки, Она легко реализуется в одном запросе, как впрочем и условие проверки на NULL некоторых полей...


clarin   (2002-03-19 16:22:00) [5]

Вы правы,что если хочешь нормальный ответ-правильно задай вопрос...чего сделать не смогла..не правильно сформулировала вопрос..
Так вот Query1 в вычислимом поле naim собирает по коду key_ из всех Query2 по полю naim2,Query3 по полю naim3,Query4 по полю naim4 и тд naim:=naim1+naim2+naim3+...-полное наименование, а если naim1,naim2,naim3 и тд пустые-то в naim:="удален "
и я все это проделала в Query1.OnCalcFields


Lusha   (2002-03-19 15:41:00) [6]

Господа имеют Вам сказать, сударыня, что возможно следующее написание запроса к БД
SELECT d.naim, d.cost, e.naim as naim1
FROM Table1 d, Table2 e
WHERE d.key = e.key

в этом случае Вы получите вычисляемое поле, вычисленное непосредственно на серевере...


Val   (2002-03-19 15:41:00) [7]

clarin (19.03.02 15:21)
И поэтому я не совсем поняла: что значит вычислять на сервере....
Создайте на сервере представление, раз уж часто работаете с данными в таком виде.


clarin   (2002-03-19 15:21:00) [8]

Alexandr: у меня в query1 поля: key,naim,...
в query2: key,cost,...
так вот мне нужно в DBGrid-е показать Query1 с полями naim,cost
Это упрощенная задача,но воббще-то Query1 еще связано с Query3,Query4 и тд по коду key.
на обработку Query1.OnCalcFields вывожу по коду key данные из Query2 по тому же коду значение поля naim...
И поэтому я не совсем поняла: что значит вычислять на сервере....


Alexandr   (2002-03-19 15:04:00) [9]

а чего беда-то?
У тебя же Oracle!
Вычисляй на сервере, а не на клиенте.
И сортируй там


clarin   (2002-03-19 15:02:00) [10]

мда...беда...


Johnmen   (2002-03-19 14:54:00) [11]

Тогда повторюсь - НИКАК !


clarin   (2002-03-19 14:49:00) [12]

Johnmen: база Oracle
fishka: в SQL-запросе я сделать не могу, т.к. на этапе открытия таблицы выполняется событие OnCalcFields , в котором и обсчитывается значение текщей записи для данного поля...


clarin   (2002-03-19 14:49:00) [13]

Johnmen: база Oracle
fishka: в SQL-запросе я сделать не могу, т.к. на этапе открытия таблицы выполняется событие OnCalcFields , в котором и обсчиьываеься значение текщей записи для данного поля...


Johnmen   (2002-03-19 14:48:00) [14]

>fishka : это если вычисляетя в запросе да и вычисления простые,
а если в приложении вычисляемое поле у НД - см.выше...


Fareader   (2002-03-19 14:48:00) [15]

>Johnmen
Не стоит быть таким категоричным, fishka дело говорит


fishka   (2002-03-19 14:43:00) [16]

В конце Query можно написать так:
order by 2//
где 2 - номер вычисляемого поля в запросе, например:
select p1, sum(p2)
from ....
order by 2


Johnmen   (2002-03-19 14:27:00) [17]

Ты бы хоть для приличия написал какая база !
Если IB, то используй FIBPlus...

А вообще - НИКАК !!!


Наверх

Титульная страница Поиск, карта сайта Написать письмо