Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.026 c
6-1086278285
Micah'GF
2004-06-03 19:58
2004.08.08
WinSock: глючит recvfrom


1-1090997977
RagE
2004-07-28 10:59
2004.08.08
TCanvas.TextOut


14-1090522193
Apsi
2004-07-22 22:49
2004.08.08
Найдите три отличий....


3-1089729699
Rostislav Rotaru
2004-07-13 18:41
2004.08.08
Alignment


14-1090244953
PokSer
2004-07-19 17:49
2004.08.08
:))





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский