2016-04-06 35 views
0

行MySQL查询分组这是极有可能这已经回答了其他地方,我无法找到任何东西,所以如果你可以链接到另一篇文章,这将是王牌。按日期和检索VARCHAR值上

所以我有一个MySQL数据库(我没有设计,我不能改变太多,添加一列是不可能的),其中列出了除其他门票和支付。我已经编写了一个查询,它将按月份对Year进行分组,并对每个月的付款总额进行分组。还有另一列可以有多个引用,它们需要是varchar,每个引用都包含在DB中的双引号中(我有一种感觉,这有点不安全,不是我的决定,我不能真的改变它),每个引用用逗号分隔(如果有多个引用)。

你可能已经制定了我想要做的,我想按日期分组的所有引用。如果事实上,我甚至不需要知道实际的参考数字是什么,我只想计算每月逐项列举的参考数(即票数)。可以假定至少会有一个引用。在前端,我要么计算逗号并添加一个,要么用逗号爆炸,并计算适合满手行的数组(在一行中很少有超过4张票),但是这会形成报告整个数据库我希望它更高效。

我没有任何代码后(我不是找人来为我写出来,只是点我朝着正确的方向,也许有一个方法我我忘了?),我”我真的不知道从哪里开始,所有其他类似这样的帖子都是关于分组和总数(我也需要这样做,但我对该部分还可以),但没有关于如何使用字符串来完成它。 SUM(),但带有一个字符串。

在此先感谢

编辑:

我一直在问表结构,我不能让在DB的时刻,但给你一个想法......

ID (指数), 时间戳(在DB-每天创建时该表是截短的和新的CSV导入), 打开(日期,将从时间戳不同,这是我想要由组列), 闭合(另一个日期,在这种情况下无关), 总计(十进制,不是rel在这个问题上的前卫,但我也按月总计), 门票(我想要算的一张,两张门票看起来像“foo1234”,“baa5678”,没有图案。相同的前缀)的门票要么)

还有其他的像客户端名称,但他们无关紧要在这种情况下

它不与任何其他表作为其唯一的功能是接收的CSV和显示信息在页面上(可以选择再次导出),表格不能从前端修改。我所做的只是编写一份总结报告。

就像我说的,我不期待任何人的任何代码或一步的指导一步,只是一些建议或相关的SO职位。这看起来似乎应该是相当简单的使用CONCAT_WS

+0

请告诉我们的你的表的例子(不需要是真实的数据),但我们至少需要结构。 –

回答

1

这是很容易解决的,阅读更多关于它here

CONCAT_WS将串联与你选择了一个分隔符的字符串,你的情况,你会用逗号做这个:CONCAT_WS(',',string_column)

这会给你一个用逗号分隔的所有字符串。如果你真的需要比你可以用这个继续计数:How to count items in comma separated list MySQL

使用这将给:

LENGTH(CONCAT_WS(',',string_column)) - LENGTH(REPLACE(CONCAT_WS(',',string_column), ',', ''))+1 

+1,因为你需要有一个更多的结果比你有逗号

+0

是的!谢谢,那正是我以后的样子。因为我已经尝试过CONCAT,所以我对自己有些恼火。“但是嘿! – LoonyToadQuack

+0

:)没问题,高兴帮忙! – Jester