首页 > 解决方案 > 如何修复这个简单的 MySQL 查询

问题描述

我有一个小问题 - 我正在学习 mysql,但我无法解决我要解决的问题。我创建了 2 个表 - 第一个有users (id, name , birth)- 第二个有transactions ( id , user_id , deposit , withdraw, date)

我有一个简单的查询,应该返回过去 6 个月每月存款和取款的姓名。

目前,我在用户中有 5 个条目,其中包含为交易生成的虚拟数据。

我试图在查询中稍微改变一下,但没有返回超过 1 个名称。我检查了 stackoverflow 搜索,但信息量似乎无穷无尽,但我还没有找到我正在寻找的答案(针对我的具体问题)。

SELECT
    T1.name,
    T2.deposit,
    T2.withdraw,
    DATE_FORMAT(T2.date, '%M-%Y') transactions
FROM
    users AS T1
INNER JOIN transactions AS T2
ON
    T1.id = T2.user_id
WHERE
    DATE_FORMAT(T2.date, '%m') BETWEEN '06' AND '12'
GROUP BY
    DATE_FORMAT(t2.date, '%m');

我希望每个名称都能显示每个月的交易

但结果如下

http://prntscr.com/mfe0zs

所以只是他可以找到当月的第一次存款或取款的结果,而且只是名字。

标签: mysql

解决方案


您想Sum()在您的存款和取款周围添加一个。还将名称添加到 GROUP BY:

SELECT
    T1.name,
    Sum(T2.deposit),
    Sum(T2.withdraw),
    DATE_FORMAT(T2.date, '%M-%Y') transactions
FROM
    users AS T1
INNER JOIN transactions AS T2
ON
    T1.id = T2.user_id
WHERE
    DATE_FORMAT(T2.date, '%m') BETWEEN '06' AND '12'
GROUP BY
    DATE_FORMAT(t2.date, '%m'), t1.name;

推荐阅读