W MySQL możesz skonstruować tabelę za pomocą union all
:
select m.mode, SUM(p.amount)
from (select 'Cash' as mode union all
select 'Card' union all
select 'Cheque' union all
select 'Bank'
) m left join
payments p
on m.mode = p.mode
group by m.mode;
Uwagi:
- Zmieniłem
name
namode
więc kolumna z tymi samymi informacjami ma tę samą nazwę. group by
klucz musi pochodzić z pierwszego imię, a nie drugi (czylim.mode
zamiastp.mode
).- Jeśli chcesz
0
zamiastNULL
, a następnie użyjcoalesce(sum(p.amount), 0)
. - Możesz rozważyć tabelę referencyjną, która zawiera wartości trybu.