Это урезанная версия структуры моей базы данных
affiliates
-id
users
-id
-affiliate_id
user_transactions
-id
-user_id
-amount - integer
-type - string(deposit, withdraw)
-deposit_time - timestamp
Какой самый эффективный способ получить affiliates
с суммированными транзакциями по типу (deposit
или withdraw
и другим), который произошел вчера?
Так что, по сути, мне нужен SQL для возврата
affiliates.id, deposit_amount, withdraw_amount
То, что я делаю сейчас, - это ORM, который в основном выполняет 2 запроса, 1 для филиалов и затем что-то вроде этого:
select id
(select sum(amount) from user_transactions as ut where ut.deposit_time = DATE(?) and ut.user_id = users.id and ut.type = deposit) as deposit_amount,
(select sum(amount) from user_transactions as ut where ut.deposit_time = DATE(?) and ut.user_id = users.id and ut.type = withdraw) as withdraw_amount
from users where affiliate_id in ?
Это приблизительный запрос. Первые 2 ?
являются вчерашней датой, третье - массив идентификаторов пользователей из предыдущего запроса.
Какой самый эффективный способ добиться этого в MySQL?