当行不存在时加入?

时间:2019-01-20 12:04:51

标签: mysql

我有3个表格(预算,交易和类别)。

可以将交易分类为category_id(链接到存储category_name的类别表)。

我要选择某个月的交易,因此我需要将交易表中的category_id与categorys表中的category_id结合起来,以获得交易的类别名称。

问题在于,有些月份没有特定类别的支出,因此当我加入时-只是没有选择这些交易,但如果类别不是,我仍然希望将其显示为0出现在该月的所有交易中(因为该交易需要以该月支出的0英镑预算显示在用户界面上)。

我尝试在交易中使用外部,左,外部左联接>预算联接,但是如果category_id不存在,我仍然无法选择交易。

select budget_id, category_name, total, sum(amount) as spent, total - sum(amount) as available, period 

from budgets

inner join categories on budgets.category_id = categories.category_id 
inner join transactions on budgets.category_id = transactions.category_id

where month(date) = month("2019-01-15") and budgets.account_id = 5 
group by budget_id

1 个答案:

答案 0 :(得分:0)

这将起作用:

select budget_id, category_name, total, sum(amount) as spent, total - sum(amount) as available, period,transactions.* 

from budgets

left join categories on budgets.category_id = categories.category_id 
left join transactions on transactions.category_id = budgets.category_id
group by budget_id