powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Две вложенных группировки
5 сообщений из 5, страница 1 из 1
Две вложенных группировки
    #33463963
9A4172
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Есть таблица S17 - "Виды выплат"
KOD числовое поле - код вида выплаты
NKOD строка - название

Таблица F8 - "Выплаты":
PY, NKAR строки, эти 2 поля вместе - код человека, получившего эту выплату
KOD число - код вида выплаты из табл. S17
DATOP дата - дата начисления выплаты
SUMP число - сумма выплаты

Одному и тому же человеку за период может быть начислено несколько выплат одного и того же вида (но не разных). Записи в F8 неуникальны.
Мне нужна численность получающих разные виды выплат за период, что-то типа такого:
Единовременное пособие 123
Ежемесячная выплата 4567
...

Придумал, как получить список людей, получивших выплату за период:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
  
SELECT F8.PY, F8.NKAR, S17.NKOD, SUM(F8.SUMP)
FROM F8, S17
WHERE
	( F8.KOD = S17.KOD )
	AND
	( F8.DATOP BETWEEN '01.12.2005' AND '31.12.2005' )
GROUP BY F8.PY, F8.NKAR, S17.NKOD
;

А вот такой запрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 
 SELECT S17.NKOD, COUNT(S17.NKOD)
 FROM F8, S17
 WHERE
 	( F8.KOD = S17.KOD )
 	AND
 	( F8.DATOP BETWEEN '01.12.2005' AND '31.12.2005' )
 GROUP BY S17.NKOD
 ;

не дает желаемого, т.к. отдельно считает несколько выплат одного и того же вида одному и тому же человеку.
Соединить эти 2 запроса мне не удалось, прошу помощи :)
Да, если что, таблицы - это DBF-файлы, сделанные в FoxPro 2.6, изменять их структуру нельзя, куда-либо импортировать - нежелательно. Так что я несколько стеснен в средствах :) Сейчас использую самодельную программу на Delphi (работает через BDE).

Спасибо за ответы-советы.

PS: Извините, за длинный и бестолковый вопрос :)
...
Рейтинг: 0 / 0
Две вложенных группировки
    #33464097
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select dist PY, NKAR, KOD from f8 where F8.DATOP BETWEEN '01.12.2005' AND '31.12.2005' into cursor cTmp

select b.NKOD, count(a.KOD) Qty from cTmp a, S17 b where a.KOD=b.KOD
...
Рейтинг: 0 / 0
Две вложенных группировки
    #33464305
9A4172
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ! (быстро, однако :) )
Как-то все подзрительно просто :)

А что означает "cursor" (это где INTO cursor ... )?
И во втором запросе зачем эти "a" и "b"? S17 - длинное название?

А одним запросом это сделать невозможно, может, все-таки есть способ?
В случае использования Delphi и BDE, при "select ... into blah-blah ..." таблица blah-blah будет создана автоматически? (сейчас проверить не могу - нет под рукой Delphi; все вышеприведенные ужасы творятся на работе)
...
Рейтинг: 0 / 0
Две вложенных группировки
    #33464387
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКак-то все подзрительно просто :)

всё гениальное просто :))

авторА что означает "cursor" (это где INTO cursor ... )?

Курсор - это временная табличка создающаяся в "мозгах" Фокса или исходная табличка с наложенным на неё фильтром условия WHERE

авторИ во втором запросе зачем эти "a" и "b"? S17 - длинное название?

Думаю AleksMed использовал для краткости - ведь а и b в 3 раза короче.

авторА одним запросом это сделать невозможно, может, все-таки есть способ?

Код: plaintext
select b.NKOD, count(a.KOD) Qty from (select dist PY, NKAR, KOD from f8 where F8.DATOP BETWEEN '01.12.2005' AND '31.12.2005') a, S17 b where a.KOD=b.KOD

авторВ случае использования Delphi и BDE, при "select ... into blah-blah ..." таблица blah-blah будет создана автоматически?

Как в дельфи реализовано - не знаю, а в Фоксе порожденный курсор будет создан и удалён автоматически.
...
Рейтинг: 0 / 0
Две вложенных группировки
    #33464674
5631
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursor- Current Set Of Records
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Две вложенных группировки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]