如何解决这个简单的MySQL查询

时间:2019-02-01 19:15:55

标签: mysql

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

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

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

我尝试过将查询中的内容向上切换,但是没有任何返回超过1个名称。我检查计算器搜索,但信息的数量似乎无穷无尽但我还没有找到我要找的(我的特定问题)的答案。

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

所以,仅仅是他第一次或第一次存款或提取的结果。

1 个答案:

答案 0 :(得分:2)

您想在您的存款和提款周围添加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;