У меня 4 таблицы с одинаковыми столбцами (id
& banka_id
& miktar
).
2 таблицы заработка (drink_earn
, eat_earn
) а также
2 таблицы расходов (drink_spending
, eat_spending
)
|id|banka_id|miktar|
---|--------|------|
|1 |2 |20 |
|2 |1 |20 |
|3 |1 |30 |
Мой вопрос.
Как я могу рассчитать все в одной строке?
drink_earn
: таблица SUM (миктар) составляет = 50 $
eat_earn
: таблица SUM (миктар) составляет = 50 $
drink_spending
: таблица СУММ (миктар) составляет = 15 $
eat_spending
: таблица СУММ (миктар) составляет = 5 $
доходы: drink_earn
+ eat_earn
= 100 $
расходы: drink_spending
+ eat_spending
20 $
Итого: заработок — расходы = 80 $
и наконец GROUP BY banka_id
Можете ли вы написать пример кода. С уважением.
Объедините все таблицы в одну с помощью UNION ALL:
select banka_id, sum(earn) - sum(spend) as total
from (
select banka_id, miktar as earn, 0 as spend
from drink_earn
union all
select banka_id, miktar as earn, 0 as spend
from eat_earn
union all
select banka_id, 0 as earn, miktar as spend
from drink_spending
union all
select banka_id, 0 as earn, miktar as spend
from eat_spending
) t
group by banka_id
Но было бы лучше, если бы у вас были все данные только в одной таблице с одним дополнительным столбцом для типа.
Других решений пока нет …