Не зная ничего о расположении ваших таблиц, данных в ваших таблицах, ни о том, что вы ожидаете, относительно того, что у вас есть, я просто догадываюсь здесь.Во-первых, вам, вероятно, нужно повторить использование SUM
для других случаев, когда вы получаете доступ к mc_gross
и tax
.Кроме того, я думаю, что использование вами подзапросов портит вас, в частности два экземпляра SELECT SUM(totalamount) FROM table1
.Я предполагаю, что вы хотите ограничить строки, используемые при вычислении этих сумм, аналогично тому, как вы делаете с totalagentsales
.Вы можете повторно использовать значение totalagentsales
, если переместите его в предложение FROM
следующим образом:
SELECT SUM(p.mc_gross) AS totalsales, SUM(p.tax) AS totlatax,
q.totalagentsales, DATE_FORMAT(p.payment_date, '%d-%m-%Y') AS filter,
(SUM(p.mc_gross) - SUM(p.tax) - q.totalagentsales) AS TotalRevenue,
(SUM(p.tax) + q.totalagentsales) AS TotalPayment
FROM table2 AS p,
(SELECT SUM(totalamount) totalagentsales FROM table1
WHERE DATE_FORMAT(paydate, '%d-%m-%Y') = DATE_FORMAT(p.payment_date, '%d-%m-%Y')
) AS q
GROUP BY filter
LIMIT 0, 30
Редактировать
SELECT SUM(p.mc_gross) AS totalsales, SUM(p.tax) AS totlatax,
q.totalagentsales, DATE_FORMAT(p.payment_date, '%d-%m-%Y') AS filter,
(SUM(p.mc_gross) - SUM(p.tax) - q.totalagentsales) AS TotalRevenue,
(SUM(p.tax) + q.totalagentsales) AS TotalPayment
FROM table2 AS p
LEFT JOIN (SELECT SUM(totalamount) totalagentsales,
DATE_FORMAT(paydate, '%d-%m-%Y') AS filter
FROM table1 GROUP BY filter) AS q
ON DATE_FORMAT(p.payment_date, '%d-%m-%Y') = q.filter
GROUP BY filter
LIMIT 0, 30