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

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

Выборка первых строк из групп. [D5, Paradox]


Wolfram ©   (2004-07-16 11:08:00) 

Здраствуйте. Есть записи, сгруппированные в таблице по одному полю, а среди этих записей у 3 записей (например) - код по другому полю 5, у другой группы записей - 8, и т.д.
Короче, c1=65 у всех, c2=6,9,15... Как выбрать из групп записей с2 по одной - первой - строке? Как вариант - выборка в один Query всех нужных записей по с1 и потом в принудительном порядке выбирать по первой записи из каждой группы, но это сильно замедляет работу. Есть ли возможность с помощью sql как-то это сделать в одном запросе?


Wolfram   (2004-07-16 12:12:00) [1]

Спасибо, работает! В [10] меня смутили 2 таблицы, но как 2-ю поставил 1-ю и все ОК! Тяжелая у вас работа - простые вещи объяснять...


Johnmen   (2004-07-16 12:01:00) [2]

[10]


Wolfram   (2004-07-16 11:53:00) [3]

Забыл дописать. Первая - с минимальным в группе codeid. Вот как только я это написал, то почти все понял. Буду очень благодарен за пример запроса.


Wolfram   (2004-07-16 11:51:00) [4]

>Johnmen

Зря я сразу не сказал. У каждого клиента есть еще уникальное индексированное поле codeid. В выборке получаются напр. 20 групп, в каждой по 2-3-4 записи. Надо выбрать первую запись из группы.


Johnmen   (2004-07-16 11:48:00) [5]

>Wolfram   (16.07.04 11:43) [11]
>Или я не понимаю.

Очень похоже :)
По какому критерию первую ? "Вот в чем вопрос" (c)


Wolfram   (2004-07-16 11:43:00) [6]

>Johnmen

Все проще. Таблица одна (clients.db). Из 4 записей надо выбрать первую. Или я не понимаю.


Johnmen   (2004-07-16 11:38:00) [7]

>Wolfram

SELECT * FROM Table T1
WHERE <Key>=(SELECT MIN(<Key>)
            FROM Table T2 WHERE T1.nz=T2.nz)


Это общая схема. Возможно в Парадоксе не пройдет...


Wolfram   (2004-07-16 11:35:00) [8]

>Соловьев

>на клиенте.

В смысле?


Wolfram   (2004-07-16 11:34:00) [9]

>Johnmen
Ключ есть, но что с ним делать? В смысле, в данной ситуации я не вижу его приемлемого использования.


Соловьев   (2004-07-16 11:33:00) [10]


> всем требованиям, только первую запись?

на клиенте.


Wolfram   (2004-07-16 11:32:00) [11]

Извините. Давайте попробуем на первое сообщение не обращать внимание, ибо не силен я в теории БДстроения и SQLвыражения. Итак. Имеется запрос select nz, fio, oplata, c_agentstvo, c_zaezd, c_gostin from clients.db where annul<>"y" and c_agentstvo='+inttostr(c_a)+' order by c_gostin, c_zaezd, nz
. Использование distinct после select не дает требуемого результата. Как выбирать из группы записей, удовлетворяющей всем требованиям, только первую запись?
Заранее благодарен.


Johnmen   (2004-07-16 11:26:00) [12]

>Wolfram  

Ключ или уникальный индекс есть ?


Соловьев   (2004-07-16 11:25:00) [13]


> Wolfram   (16.07.04 11:18)

не пойму как это связано с первым постом.

ЗЫ Не мог бы ты писать на нормальном языке, а не по "блатному" - коробит аж.


Wolfram   (2004-07-16 11:18:00) [14]

Кароче.
select nz, fio, oplata, c_agentstvo, c_zaezd, c_gostin from clients.db where annul<>"y" and c_agentstvo='+inttostr(c_a)+' order by c_gostin, c_zaezd, nz
Выдается список клиентов. 4 чела имеют 1 общий nz. Как выбрать только первого из них? Ради экономии бумаги. А то шибко много по 500 чел-к списки печатать.


Соловьев   (2004-07-16 11:13:00) [15]

если бы ты писал четче свои мысли может и помог бы, а так ничего не понял...


Johnmen   (2004-07-16 11:11:00) [16]

"Ты не умничай, ты рукой покажи." (с) известный анекдот


Наверх

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