Dans MySQL, vous pouvez construire la table en utilisant 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;
Remarques :
- J'ai changé
name
enmode
donc la colonne avec les mêmes informations porte le même nom. - Le
group by
la clé doit provenir du premier nom, pas le deuxième (c'est-à-direm.mode
au lieu dep.mode
). - Si vous voulez
0
au lieu deNULL
, puis utilisezcoalesce(sum(p.amount), 0)
. - Vous voudrez peut-être envisager une table de référence contenant les valeurs de mode.