【发布时间】:2011-06-14 04:57:24
【问题描述】:
我有一个 MYSQL 数据库,其中包含我公司客户每天使用我们服务时的数据。
数据库中的每个表代表一个 24 小时期间以及在该期间发生的所有客户交易。
我想计算几天内的总交易量
到目前为止,我有一个执行以下操作的 select 语句
select
(
select count(customer) from 2010Dec28
where customer='<customer name>'
) as t1,
(
select count(customer) from 2010Dec29
where customer='<customer name>'
)as t2;`
但这会将结果作为两个单独的计数返回
| t1 | t2 |
| 1438 | 16282 |
1 row n set (0.00 sec)`
我的问题是如何生成这两个结果的总和,而不必在我的应用程序代码中这样做。
【问题讨论】:
-
我认为“数据库中的每个表都代表一个 24 小时周期”是您应该停止并重新考虑您的设计的地方。
-
听从人们给您的建议并修复您的设计。每个日期不应有单独的表格。您最多可能有一张用于实时数据的表和一张用于存档数据的表。日期是表中各行中的一列,而不是表的名称。然后按日期查询计数非常简单。如果在修复设计之前需要临时解决方案,请使用
UNION ALL查询将多个查询合并为一个,然后将整个联合包装到另一个SELECT到SUM的所有计数中。 -
每天每张桌子都是我见过的最糟糕的主意,效率低下,无法维护
-
哇,好吧,我肯定会重新设计我这样做的方式,在我的辩护中,我是一名网络工程师,我在业余时间一直在拼凑这些,以从各种日志文件中获取一些统计数据