MySQL组相同的标题(行)和金钱(行)相加,但保留单独的时间戳进行排序

时间:2016-01-18 08:57:05

标签: php mysql

我已经在互联网上寻找答案,但我找不到任何答案。 (我可能会错误地问?) 我有一个看起来像这样的表: enter image description here 我一直在使用查询:

SELECT title, date, SUM(money) 
FROM payments 
WHERE username = '$username_n' and type=0 
GROUP BY title

它可以解决问题,并将相同的标题分组并总结其值

enter image description here

但正如你所看到的,它只给了我一个日期,我希望能够制作一个滑块,我可以从日期中对日期进行排序,但如果它只创建一个,我就不能这样做每个分组标题的日期。

如何创建多个日期,但仍然可以删除重复的标题?

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT title, date, SUM(money) FROM payments 
WHERE username = '$username_n' and type=0 GROUP BY title, date(`date`);

答案 1 :(得分:0)

字段列表中的字段没有聚合或是分组​​的一部分,这有点奇怪。正如您之前使用日期字段:

SELECT title, date, SUM(money) FROM payments 
WHERE username = '$username_n' and type=0 
GROUP BY title

按标题分组,汇总金钱领域,一切都很好。日期字段不是分组或聚合的一部分。 mysql正在做什么,它只会获取聚合中日期字段的字段值。这就是为什么你只在结果中看到一个日期值。正如代码和尚解释的那样,你需要在分组中使用日期字段。在MS SQL Server中,您的查询实际上会出错,因为MS SQL Server不允许不属于分组或聚合的字段,我认为这非常好。

答案 2 :(得分:0)

下面的查询将以逗号分隔的方式给出日期值。您可以使用PHP /服务器端代码通过逗号分解它们并创建列表/数组并将其返回到客户端,即JavaScript。使用javascript对列表进行排序。

SELECT title, group_concat(date) as `dates`, SUM(money) 
FROM payments 
WHERE username = '$username_n' and type=0 
GROUP BY title