Текущий архив: 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.47 MB
Время: 0.035 c