【发布时间】:2013-06-04 16:35:17
【问题描述】:
我有一个收入和支出表。我想在一个查询中同时选择它们,并获得按月分组的income.amount 字段和expense.amount 字段之间的差异。这样查询将返回一个结果,即基于月份计算的总收入金额中的总费用金额。我使用了两种方法,但没有奏效。找到以下内容:
SELECT *, count(*), sum(`transaction`.amount) as tiamount, sum(expenditure.amount) as teamount, monthname(`transaction`.date) as mni, monthname(expenditure.date) as mne
FROM `transaction`, expenditure
WHERE month(expenditure.`date`)=month(`transaction`.`date`) and month(`transaction`.`date`)=month(expenditure.`date`)
GROUP BY monthname(`transaction`.date) ORDER BY `transaction`.date Desc
另一个是:
SELECT count(*), `transaction`.date, sum(`transaction`.amount) as tiamount, sum(`transaction`.amount - expenditure.amount) as diff, monthname(`transaction`.date) as mni
FROM `transaction` left join expenditure on monthname(`transaction`.date) = monthname(expenditure.date)
UNION ALL
SELECT count(*), expenditure.date, sum(expenditure.amount) as teamount, sum(`transaction`.amount - expenditure.amount) as diff, monthname(expenditure.date) as mne
FROM expenditure left join `transaction` on monthname(`transaction`.date) = monthname(expenditure.date)
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
请把表结构和测试数据放到sqlfiddle.com,我们可以帮你写请求
-
好的。谢谢,我去过那里并已经放置了表 sql 并构建了架构。但是当我运行 mysql 时,我仍然得到相同的结果。我下一步该怎么做。谢谢
-
我真正想要的是返回的第一行减去第二行。谢谢
-
你应该在那里得到一个错误。只需将指向小提琴的链接放入您的问题中,这样我就可以看到您遇到了什么错误。
-
没有收到任何错误。它实际上显示了我想要的那个确切的东西。我知道我的查询不正确,因为我还是 mysql 的新手。这是小提琴链接sqlfiddle.com/#!2/50d21sqlfiddle.com/#!2/50d21/1 这些行相互相乘,从而给出了膨胀的数字。谢谢