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

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

Переменное правило сортировки. Возможно ли это? [D6]


Страницы:   1 2

alex-ran ©   (2005-09-15 16:43:00) 

Уважаемые мастера. Возникла необходимость сортировать Набор Данных с переменным условием сортировки, допустим если первое поле нечетное (либо какое другое условие) - то второе поле по возрастанию, и первое четное -  второе по убыванию и т. д., Например:

 Есть:                             Надо получить:

№       Длина                 №       Длина
1        500                     1        500
1        1600                   1        1600
2        700                     2        1400
2        1400                   2        700
3        600                     3        200
3        200                     3        600

Можно ли такое сделать средствами SQL?
Пока что приходится делать руками.
С уважением, Александр.


Johnmen   (2005-09-16 09:40:00) [1]

Всё понятно. Тип целочисленный.
И всё приводится к нему, дробная отбрасывается...


Reindeer Moss Eater   (2005-09-16 09:30:00) [2]

Продукт:
Delphi7

Приложение:
SQL explorer

База данных
DBDEMOS

Таблица:
employee.db

Запрос:
select empno - (2 * (empno / 2)) from employee

Выборка:

0
0
1
0
1
1
...


Johnmen   (2005-09-16 09:17:00) [3]

>Reindeer Moss Eater ©   (15.09.05 23:15) [17]
>Получаем:
>1,1
>2,0
>3,1
>4,0
>5,1
>Проверено электроникой.

Какой именно электроникой ? Подробно.


Fedia   (2005-09-16 00:10:00) [4]

Твоя правда. Просто странно это...
У меня было поле Number.


Reindeer Moss Eater   (2005-09-15 23:48:00) [5]

Федя, у тебя тип поля какой?


Fedia   (2005-09-15 23:41:00) [6]

Предположил, что твой результат, это глюк, возникающий про работе с Paradox.  Проверил. Получается:
1,0
2,0
3,0
4,0
5,0
как и должно быть.


Reindeer Moss Eater   (2005-09-15 23:15:00) [7]

create table test(num integer)
insert into test values(1)
insert into test values(2)
insert into test values(3)
insert into test values(4)
insert into test values(5)

select num, num - (2 * (num / 2)) from test

Получаем:
1,1
2,0
3,1
4,0
5,1

Проверено электроникой.


Fedia   (2005-09-15 23:12:00) [8]

Reindeer Moss Eater ©   (15.09.05 23:00) [15]
>Да так. Результат <целочисленное поле> / 2 будет целочисленным.
Ты не путаешь понятие "целочисленное" и "четное" ?


Reindeer Moss Eater   (2005-09-15 23:00:00) [9]

>Ну если поле целочисленное, то деление на два и так будет целочисленным

Это как это ???


Да так. Результат <целочисленное поле> / 2 будет целочисленным.


Johnmen   (2005-09-15 21:25:00) [10]

>Ну если поле целочисленное, то деление на два и так будет целочисленным

Это как это ???

>И каст к интегеру не нужен.

По-моему ((num - 2 * (num / 2)) - 0.5) всегда = -0.5
Или нет ?


Reindeer Moss Eater   (2005-09-15 20:28:00) [11]

Ну если поле целочисленное, то деление на два и так будет целочисленным.
И каст к интегеру не нужен.


Johnmen   (2005-09-15 20:23:00) [12]

>Reindeer Moss Eater ©  (15.09.05 19:32) [11]

Поправочка (для Paradox7)

SELECT F1,
 (CAST(0.5-(CAST(F1/2 AS INTEGER)-F1/2) AS INTEGER)-1)*F2,  
 F2
FROM Table
ORDER BY 1,2


Reindeer Moss Eater   (2005-09-15 19:32:00) [13]

Если поле num целочисленное, то :

select num,((num - 2 * (num / 2)) - 0.5) * len, len from test
order by 1,2

Если дробное, то чуть сложнее.


alex-ran   (2005-09-15 18:11:00) [14]

Если получится, просьба поделиться ноу-хау.
Будем-с ждать. :)


Reindeer Moss Eater   (2005-09-15 18:02:00) [15]

Нет все таки можно.
Напишу когда приду домой.


Reindeer Moss Eater   (2005-09-15 18:00:00) [16]

Нет, все таки нельзя.
В смысле я написал выражение, которое выстроит надор данных по этому правилу, но capability no supported


Reindeer Moss Eater   (2005-09-15 17:56:00) [17]

Кажется это можно и в LocalSQL.
:)


alex-ran   (2005-09-15 17:50:00) [18]

Вообще-то я и склонялся к мысли как и Johnmen ©
но думал, а вдруг?
Ну а раз нет, то спасибо всем и вопрос закрыт.


Johnmen   (2005-09-15 17:35:00) [19]

Не поможет...


Reindeer Moss Eater   (2005-09-15 17:30:00) [20]

Для парадокса изучай LocalSQL Guide


Страницы:   1 2

Наверх

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