Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
ВнизКак обойтись одним запросом Найти похожие ветки
← →
TohaNik (2003-04-01 12:04) [0]Доврый день.
Подскажите как это решается.
По первому запросу получаем сумму заказанного по сонтракту(CTRID)
select
SUM(POSITIONS.POS_WEIGHT*POSITIONS.POS_PRICE)AS SUM_CONTRACT,
CONTRACTS.CTRID
FROM POSITIONS, ORDERS, CONTRACTS
WHERE (POSITIONS.ORDID = ORDERS.ORDID) AND
(ORDERS.CTRID = CONTRACTS.CTRID)
GROUP BY CONTRACTS.CTRID
По второму запросу получаем сумму проплат по контракту(CTRID)
select INCOMES.CTRID, SUM(INCOMES.INSUM) AS SUM_CONTRACT
from INCOMES
GROUP BY INCOMES.CTRID
Как получить результат где CTRID будет соотв-ть сумма заказанного и сумма проплаченного.
← →
Соловьев (2003-04-01 12:08) [1]связать INCOMES и CONTRACTS через JOIN
← →
TohaNik (2003-04-01 16:17) [2]Спасибо.
Решил при помощи лукапов в FastRep, но всетаки интересно:
после
select
sum(POSITIONS.POS_WEIGHT*POSITIONS.POS_PRICE) as SUM_CONTRACT,
CONTRACTS.CTRID,
INCOMES.CTRID, SUM(INCOMES.INSUM) AS SUM_CONTRACT
FROM POSITIONS, ORDERS, CONTRACTS LEFT JOIN INCOMES
ON CONTRACTS.CTRID = INCOMES.CTRID
WHERE (POSITIONS.ORDID = ORDERS.ORDID) AND
(ORDERS.CTRID = CONTRACTS.CTRID)
как группировать-
если
GROUP BY CONTRACTS.CTRID, INCOMES.CTRID
то сумы по контрактам(CONTRACTS.CTRID) верные, а сумы по проплатам(INCOMES.CTRID) увеличиваются соответственно количеству
позиций (POSITIONS.ORDID) всех заказов(ORDERS.CTRID) группируемого(CONTRACTS.CTRID)
Ну если по контракту был заказ с тремя позициями на сумму 50 000
и была проплата на 10 000, а получаем 30 000.
В принципе понятно почему, но как обойти.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c