Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

Выборка первых строк из групп.   Найти похожие ветки 

 
Wolfram   (2004-07-16 11:08) [0]

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


 
Johnmen ©   (2004-07-16 11:11) [1]

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


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

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


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

Кароче.
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:25) [4]


> Wolfram   (16.07.04 11:18)

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

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


 
Johnmen ©   (2004-07-16 11:26) [5]

>Wolfram  

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


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

Извините. Давайте попробуем на первое сообщение не обращать внимание, ибо не силен я в теории БДстроения и 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 не дает требуемого результата. Как выбирать из группы записей, удовлетворяющей всем требованиям, только первую запись?
Заранее благодарен.


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


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

на клиенте.


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

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


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

>Соловьев

>на клиенте.

В смысле?


 
Johnmen ©   (2004-07-16 11:38) [10]

>Wolfram

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


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


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

>Johnmen

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


 
Johnmen ©   (2004-07-16 11:48) [12]

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

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


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

>Johnmen

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


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

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


 
Johnmen ©   (2004-07-16 12:01) [15]

[10]


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
3-1089718576
Shama_n
2004-07-13 15:36
2004.08.08
Как на SQL записать текстовую строку в BLOB поле?


1-1090495879
Димон
2004-07-22 15:31
2004.08.08
Быстро грузить текстовые файлы порядка 10 метров


14-1090165889
вразлет
2004-07-18 19:51
2004.08.08
Доклад ООН о развитии человека за 2004 год


1-1090348217
Магнит
2004-07-20 22:30
2004.08.08
Управление окнами в MDI-приложении


3-1089714731
Dmitriy O.
2004-07-13 14:32
2004.08.08
Интербазе "INTERNAL ERROR"