代码之家  ›  专栏  ›  技术社区  ›  Niet the Dark Absol

按顺序将任务分组

  •  0
  • Niet the Dark Absol  · 技术社区  · 14 年前

    我将用一个类比来解释这个问题,只是为了简化解释。

    假设在一个游戏中你有一个可以制造弓箭手和骑兵的建筑。你先订购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 回复  |  直到 14 年前
        1
  •  0
  •   Niet the Dark Absol    12 年前

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