mysql - 选择 MySQL Month() 作为空列

标签 mysql join left-join

有个问题想请教。当我使用左联接时,即使某些行中的值为空值,如何列出所有左表以显示数据?

这是我的查询:

SELECT *, SUM(transactions.debit_credit) current_spending 
FROM (`budget`) LEFT JOIN `categories` ON `budget`.`category`=`categories`.`idcategory` 
LEFT JOIN `user_category` ON `budget`.`category`=`user_category`.`idcategory` 
LEFT JOIN `category_transaction` ON `budget`.`category`=`category_transaction`.`idcategory` 
LEFT JOIN `transactions` ON `category_transaction`.`idtransaction`=`transactions`.`idtransaction` 
WHERE `user_category`.`iduser` = '1' 
AND MONTH(transactions.transaction_date) = '11' 
GROUP BY `budget`.`idbudget`;

当我删除 AND MONTH(transactions.transaction_date) = '11' 时,查询工作正常,接受它显示所有数据,而不仅仅是 1 个月的交易。

帮忙??请??知道怎么做吗?

最佳答案

您的 where 子句将您的左联接 转换为内联接,因为您根据联接表的条件过滤数据。

而是将该条件放入联接的 on 子句中

SELECT *, SUM(transactions.debit_credit) current_spending 
FROM (`budget`) 
LEFT JOIN `categories` ON `budget`.`category`=`categories`.`idcategory` 
LEFT JOIN `user_category` ON `budget`.`category`=`user_category`.`idcategory` 
                         AND `user_category`.`iduser` = '1' 
LEFT JOIN `category_transaction` ON `budget`.`category`=`category_transaction`.`idcategory` 
LEFT JOIN `transactions` ON `category_transaction`.`idtransaction`=`transactions`.`idtransaction` 
                        AND MONTH(transactions.transaction_date) = '11' 
GROUP BY `budget`.`idbudget`;

关于mysql - 选择 MySQL Month() 作为空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26943781/

相关文章:

mysql - 如何计算具有不同日期的行数

php - 提交按钮不发送表单数据到 mysql - jquery 问题

c# - ASP.NET:插入后按钮不起作用 'namespace'

mysql - 内部加入空条件 : bug or feature?

mysql 使用having 子句进行连接

mysql - 从右表条件获取左表行

mysql - mysql中的运行时计算

join - 在存在多级关系的情况下,在 SQLAlchemy(异步)中查询数据的正确方法是什么?

mysql - 在 MySQL 查询中左连接还是右连接?

php - 比较两列之间的日期时 LEFT JOIN 不起作用