![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выборка первых строк из групп. [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]"Ты не умничай, ты рукой покажи." (с) известный анекдот