按顺序将任务组合在一起

时间:2010-11-23 18:27:01

标签: mysql

我将使用这个类比,只是为了简化解释。

假设在游戏中你有一个可以生产弓箭手和骑兵的建筑物。您订购了5个弓箭手,然后是3个骑兵,然后另外订购另外4个弓箭手。

对于这个例子,我有一个MySQL表:

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT
`buildingid` INT UNSIGNED NOT NULL
`unit` ENUM('Archer','Cavalry') NOT NULL
`complete` TIMESTAMP NOT NULL

现在我想在订单队列中显示单位。大多数这种风格的游戏只会在一条线上显示5个弓箭手,3个骑兵和4个其他弓箭手。但是因为我不希望限制队列的长度,所以对于更大的命令(比如200个弓箭手)来说这可能会非常混乱

我希望能够让MySQL返回buildingid, unit, count, next,其中“count”是单位数,“next”是将要完成的最早单位的时间戳。

虽然我可以使用GROUP BY查询,但这会将所有弓箭手组合在一起,而不管其间是否有骑兵。我需要一种按单位类型分组的方法,仅限于连续输入。

我之前的尝试工作有效,但在我测试订购1000个单位时完全崩溃了服务器。

我希望我能够清楚地解释我要做的事情......

1 个答案:

答案 0 :(得分:0)

正确的答案是通过添加“数量”字段将它们分组到数据库中。到达时间后,将数量减少一个并将计时器重置为下一个完成时间,或者如果数量为零则删除该行。