Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как в одном запросе сделать 2 группировки?  [new]
Подпальмой
Guest
Есть несколько автомастерских, в каждой числится некоторое количество машин, у каждой машины есть марка и некоторые тех.параметры, которые нужно сложить. Собрал всю эту инфу в курсор. Задача: вытянуть из этого главного курсора инфу о машинах, сложив их тех.параметры, но сложив только для машин одной марки и закрепленных за одной и той же автомастерской. 2 группировки, вывод запроса во второй курсор. Как сделать?
mainCurr:
Autodoc название автомастерской
Carlogo марка автомобиля
Techdate1 поле с тех.данными, числовой тип
Techdate2 поле с тех.данными, числовой тип
Techdate3 поле с тех.данными, числовой тип

з.ы. Работаю в 9ке, перед запросами с группировкой ставлю SET ENGINEBEHAVIOR 70.
19 апр 10, 09:37    [8648259]     Ответить | Цитировать Сообщить модератору
 Re: Как в одном запросе сделать 2 группировки?  [new]
Подпальмой
Guest
Результат в таком виде:
Назв.автомастерской | Марка_авто | Тех.данные1 | Тех.данные2 | Тех.данные3
19 апр 10, 09:40    [8648264]     Ответить | Цитировать Сообщить модератору
 Re: Как в одном запросе сделать 2 группировки?  [new]
Dima T
Member

Откуда:
Сообщений: 15281
Группировку можно делать по нескольким полям:
GROUP by Autodoc, Carlogo
19 апр 10, 09:50    [8648329]     Ответить | Цитировать Сообщить модератору
 Re: Как в одном запросе сделать 2 группировки?  [new]
прошелмимо
Member [заблокирован]

Откуда: Из Курска понаехал
Сообщений: 10363
SET ENGINEBEHAVIOR 70
не нужен,
если правильно писать запрос.

видишь, мне не понадобилось дергать EngineBehavior,
почему так - поиском в данном форуме

Set EngineBehavior 90

Create CURSOR mainCurr ( Autodoc   v(50)	; &&название автомастерской 
						,Carlogo   v(10)	; &&марка автомобиля
						,Techdate1 n(10)	; &&поле с тех.данными, числовой тип 
						,Techdate2 n(10)	; &&поле с тех.данными, числовой тип
						,Techdate3 n(10)	; &&поле с тех.данными, числовой тип
						)
						
Insert into mainCurr ;
			values (  'у пети'  ;
					, 'копейка' ;
					, 10, 20, 30 )
					
Insert into mainCurr ;
			values (  'у пети'  ;
					, 'копейка' ;
					, 10, 20, 30 )
											
Insert into mainCurr ;
			values (  'у васи'  ;
					, 'копейка' ;
					, 10, 20, 30 )
											
Select Autodoc ;
	,  Carlogo ;
	, sum(Techdate1) ;
	, Sum(Techdate2) ;
	, Sum(Techdate3) ;
  from mainCurr ;
  group by Autodoc, Carlogo 
19 апр 10, 09:50    [8648330]     Ответить | Цитировать Сообщить модератору
 Re: Как в одном запросе сделать 2 группировки?  [new]
GermanGM
Member

Откуда:
Сообщений: 256
select autodoc,carlogo,sum(Techdate1) as Techdate1,sum(Techdate2) as Techdate2,sum(Techdate3) as Techdate3 from MyCursor into cursor Result group by 1,2
19 апр 10, 09:51    [8648334]     Ответить | Цитировать Сообщить модератору
 Re: Как в одном запросе сделать 2 группировки?  [new]
прошелмимо
Member [заблокирован]

Откуда: Из Курска понаехал
Сообщений: 10363
GermanGM
select autodoc,carlogo,sum(Techdate1) as Techdate1,sum(Techdate2) as Techdate2,sum(Techdate3) as Techdate3 from MyCursor into cursor Result group by 1,2



group by 1,2

если явно знаешь имена полей - так никогда не делай
поубивал бы ...
19 апр 10, 09:53    [8648346]     Ответить | Цитировать Сообщить модератору
 Re: Как в одном запросе сделать 2 группировки?  [new]
GermanGM
Member

Откуда:
Сообщений: 256
прошелмимо,

off Обещаю вскоре исправиться! :)
19 апр 10, 10:18    [8648500]     Ответить | Цитировать Сообщить модератору
 Re: Как в одном запросе сделать 2 группировки?  [new]
Подпальмой
Guest
Блин, а я думал типа подзапросами делать. Пробовал одну группировку -- либо по мастерским, либо по маркам, в итоге по одной записи выводилось -- по последней марке в главном курсоре.
Оказывается, group by можно с двумя полями использовать: сначала группируется по первому, затем по второму. Всем большое спасибо за помощь!
С set поищю по форуму.
19 апр 10, 10:30    [8648568]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить