mysql - 当行不存在时加入?

标签 mysql

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

可以使用category_id(链接到存储category_name的类别表)对交易进行分类。

我正在选择某个月份的交易,我需要将交易表中的category_id与类别表中的category_id连接起来,以获得交易的类别名称。

问题是有些月份没有特定类别的支出,所以当我加入时 - 它只是不选择这些交易,但如果类别不是,我仍然想将它们显示为 0该月的任何交易都会显示(因为它需要在 UI 上显示为该月花费的 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

最佳答案

这会起作用:

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

关于mysql - 当行不存在时加入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54276244/

相关文章:

java - 如何在 Netbeans 8.0 中使用 SSL 连接到 mysql

mysql - 从 meta_key MySQL 中删除 meta_values

php - 如何在 ci 中使用动态添加和删除时内爆文本区域值?

mysql - 在 Xampp 中访问 MySql 数据库

MySQL:高效地返回组不为空的分组字段

php - (PHP/MYSQL) fatal error : Class 'STemplate' not found

java - MySQL 连接消失 Java

mysql - 插入时出错 - 错误代码 1241。操作数应包含 1 列

mysql - 如何获得特定sql查询的相反结果?

php - 来自 PHP 的 flot 饼图