私はこの質問がたくさん聞かれたことを知っていますが、私が使うべきCOALESCE
ifnull
か何か他のものを使うべきかを理解することができませんでした。
私は次のクエリを持っています:
select (amount-
(select (sum(l.amount_sum)-sum(lr.reward)) as total
from logs l
join logs_rewards lr on l.id = lr.related_log_id
where l.agent_id = '1'))
as balance
from logs_payments
where agent_id = '1'
問題は、クエリにがagent_id
存在しない場合はlogs_payments
行を返さないことですが、とにかく結果を返すことですが、amounts
存在しない場合は、サブクエリに対して0に設定します
今、私は別のテーブルをクエリして、次のように結果を結合することを考えました:
select (lp.amount-
(select (sum(l.amount_sum)-sum(lr.reward)) as total
from logs l
join logs_rewards lr on l.id = lr.related_log_id
where l.agent_id = '1'))
as balance
from agents a
join logs_payments lp on lp.agent_id = a.id
where a.id = '1'
しかし、それもうまくいきませんでした。この問題に対してどのようなアプローチを取るべきですか?
明確にするために、このクエリが常にサブクエリの量-結果を返すようにしたいのですが、量がまだ存在しない場合は結果を返しますが、それを0として計算します。