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

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

Как получить групповую сортировку ;в таблице? [D5, IB5.x]


novill ©   (2003-05-13 10:40:00) 

Уважаемые мастаки, меня тут начальство озадачило:

Есть таблица с полями:
ШИФР - шифр группы записей (шифр комплекта деталей),
РАЗМЕР - уникальый признак записи в группе (размер детали).

Необходимо получить следующую сортировку:
Сначала идет группа записей минимальный РАЗМЕР в которой является наименьшим для всех остальных групп,
...,
последней идет группа минимальный РАЗМЕР в которой наибольший из всех групп.

Например
ШИФР|РАЗМЕР
3 |2
3 |3
3 |4
1 |3
1 |4
1 |5
1 |7
4 |5
4 |6
4 |7
4 |8

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


Zacho   (2003-05-13 14:50:00) [1]


> novill © (13.05.03 14:42)

Лучше аськой 35253857


novill   (2003-05-13 14:42:00) [2]


> Zacho © (13.05.03 13:41)

У тебя можно еще поконсультироваться?
Есть еще пара вопросов в продолжении этой темы.
Может почтой? или аськой? (146912494)


Zacho   (2003-05-13 13:41:00) [3]


> novill © (13.05.03 13:36)

Создай индекс на поле РАЗМЕР


novill   (2003-05-13 13:36:00) [4]

Спасибо.


> Zacho

Ты прав.
У меня получилось. Правда запрос выполнялся минут 7 (на 6200 записей)


Zacho   (2003-05-13 11:49:00) [5]


> Соловьев © (13.05.03 11:32)

Автор исходного поста привел пример, какой результат надо получить. А в результате запроса Johnmen © (13.05.03 10:54) или WarLord © (13.05.03 11:07) получится что-то типа :
ШИФР|РАЗМЕР
3 |2
1 |3
4 |5

> WarLord © (13.05.03 11:33)

А ты попробуй, и увидишь что получится совсем не то, а вот что:
ШИФР|РАЗМЕР
3 |2
1 |3
3 |3
1 |4
3 |4
1 |5
4 |5
4 |6
1 |7
4 |7
4 |8


WarLord   (2003-05-13 11:33:00) [6]

а по-моему еще проще:
SELECT ШИФР, РАЗМЕР
FROM Table
ORDER BY РАЗМЕР, ШИФР


Соловьев   (2003-05-13 11:32:00) [7]

2 Zacho

> Сначала идет группа записей минимальный РАЗМЕР в которой
> является наименьшим для всех остальных групп,
> ...,
> последней идет группа минимальный РАЗМЕР в которой наибольший
> из всех групп.

групы-это все?


Zacho   (2003-05-13 11:21:00) [8]


> Johnmen © (13.05.03 10:54)



> WarLord © (13.05.03 11:07)

Насколько я понял, надо получить всезаписи, а не только с минимальным размером. Так что, скорее всего надо что-то типа
SELECT T.SHIFR,T.RAZMER,
(SELECT MIN(T2.RAZMER) FROM TEST T2 WHERE T.SHIFR=T2.SHIFR)
FROM TEST T
ORDER BY 3,1


WarLord   (2003-05-13 11:07:00) [9]


> SELECT ШИФР, MIN(РАЗМЕР)
> FROM Table
> GROUP BY ШИФР
> ORDER BY РАЗМЕР


Johnmen   (2003-05-13 10:54:00) [10]

SELECT ШИФР, MIN(РАЗМЕР)
FROM Table
GROUP BY ШИФР
ORDER BY 2


Наверх

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