Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: snipe
Ну смотрите

имеем таблицуВ
которая содержит в себе информацию по поступлению платежей по договорам
пишем запрос к этой табле который группирует номера договоров и считает сумму поступлений
получаем примерно вот так

SELECT ТаблицаВ.Номер_Договора, Sum(ТаблицаВ.Платеж) AS Поступление
FROM ТаблицаВ
GROUP ТаблицаВ.Номер_Договора


Имеем ТаблицуА в которой находится список договоров


SELECT ТаблицаА.*
FROM ТаблицаА


а теперь смотрите что я с ними сделаю


SELECT ТаблицаА.Номер_Договора,ТаблицаА.Сумма_Договора, a1.Поступление
FROM ТаблицаА LEFT JOIN (SELECT ТаблицаВ.Номер_Договора, Sum(ТаблицаВ.Платеж) AS Поступление FROM ТаблицаВ GROUP ТаблицаВ.Номер_Договора)  AS a1 
ON ТаблицаА.Номер_Договора = a1.Номер_Договора


в итоге должен получиться запрос в котором 3 столбца Номер договора, Сумма договора, Общая сумма Поступлений

хитрость (если так это можно назвать) в том что текст запроса к таблеВ вложен во внутрь данного запроса т.е. вместо имени таблицы или имени запроса используется текст запроса (который в свою очередь делает группировку и суммирование)
вот это место

(SELECT ТаблицаВ.Номер_Договора, Sum(ТаблицаВ.Платеж) AS Поступление
FROM ТаблицаВ
GROUP ТаблицаВ.Номер_Договора) AS a1

если убрать текст запроса то останется () as a1
т.е. в запросе верхнего уровня этот запрос будет проходить по именем a1

LEFT JOIN - это тип соединения таблиц - в данном случае все данные из таблицыА и только те записи из таблицы а1 которые совпадают

ON ТаблицаА.Номер_Договора = a1.Номер_Договора - это поля объединения (совпадения) в таблицах - таблицаА и а1


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.