次のMySQLビューがあるとしましょう。
create or replace view total_transactions(account_id, total) as
select
t.account_id,
ifnull(sum(t.value), 0) as total
from transactions t
where t.paid IS TRUE
group by t.bank_account_id;
アカウントにまだトランザクションがない場合、ビューに0を返したいとしましょう。今のところ、次のような選択を行うと、次のようになります。
select * from total_transactions where account_id = 2060;
また、アカウント2060にはトランザクションがありませんでした。0ではなく、何も返されません。
どうすれば修正できますか?
前もって感謝します。
編集
私はそれが何かである可能性があると思いますgroup by
...
group byなしでビューに使用しているクエリを実行すると、機能します(結果がなくても0を返します)が、使用するgroup by
とnullになります。
select
t.account_id,
ifnull(sum(t.value), 0) as total
from transactions t
where t.paid IS TRUE
and account_id = 2060;
を返し0
、
create or replace view total_transactions(account_id, total) as
select
t.account_id,
ifnull(sum(t.value), 0) as total
from transactions t
where t.paid IS TRUE
and account_id = 2060
group by t.bank_account_id;
空のセットを返します。