【发布时间】:2013-02-28 16:02:20
【问题描述】:
我在下面需要一些帮助
我有表“数据”获取存储在其上的数据,如下所示
+------------+----------+-----------
| regdate | regtime | items
+------------+----------+-----------
| 2013-03-02 | 09:12:03 | item1
| 2013-03-02 | 10:12:05 | item1
| 2013-03-02 | 15:12:07 | item2
| 2013-03-02 | 20:12:09 | item3
| 2013-03-02 | 21:12:11 | item4
| 2013-03-02 | 22:12:14 | item3
10 道菜等可以在一天中的不同时间从 09:00 到 23:00 上桌
我还有另一个表 "ItemsPerInterval",如下所示
+------------+-------------+-------------+-------------+-------------+
| regdate | reginterval | item1 | item2 | item3 |
+------------+-------------+-------------+-------------+-------------+
| 2013-03-01 | 09:00:00 | 0 | 0 | 0 |
+------------+-------------+-------------+-------------+-------------+
以 30 分钟 为基础增加的时间间隔如 09:00 , 09:30 , 10:00, 10:30 ... 直到 23:00
我想做的是在表上插入数据ItemsPerInterval 包括表“数据”(item1、item2、item3、.... item10)上项目的重复计数 并按时间间隔(09:00:00、09:30:00、10:00:00、10:30:00、.... 23:00:00)存储它们,以便每个间隔 - 例如 - 09:00:00 将具有从 09:00:00 开始在 Data 表中注册的所有项目的重复计数直到 09:29:59 直到 23:00:00
编辑**1
因此,最终必须在 ItemsPerInterval 表上注册所有以下间隔,并保存间隔时间窗口中已报告的 10 个项目中每个项目的计数
09:00:00
09:30:00
10:00:00
10:30:00
11:00:00
11:30:00
12:00:00
12:30:00
13:00:00
13:30:00
and so on .....
.
.
.
22:00:00
22:30:00
23:00:00
/编辑**1
我阅读了一些关于例程/程序的资料,但我不知道其中的区别,也不知道如何使用它来实现上述内容。
我正在使用 软件:MySQL 软件版本:5.5.24 使用 PHP。
感谢您的支持
谢谢
【问题讨论】:
-
09:00-23:00 范围之外是否有
regtime,如果有,应该如何处理? -
将结果存储在新表中没有多大意义,因为您始终可以使用将按间隔选择和分组项目的查询从表数据中检索此数据。
-
而你大约半小时可能类似于
FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(regtime)/1800)*1800); -
@Wrikken 是的,由于人为错误,一些项目将在此范围之外注册,但我稍后会添加另一个表来跟踪范围外的项目。所以现在这个考虑超出范围的项目被忽略
-
@AhmedElGamilI 如果你想要不存在的间隔(没有发生任何事情),数据必须来自 somewhere 以获得
LEFT JOIN,所以你;可能必须使用09:00,09:30....22:30,23:00序列创建一个虚拟表。
标签: php mysql sql procedures routines