ник: 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