【问题标题】:Logic Implemention: Determining availability by resource type, when a resource can belong to multiple types逻辑实现:当资源可以属于多种类型时,根据资源类型确定可用性
【发布时间】:2014-01-15 15:05:11
【问题描述】:

考虑一家拥有多种房型(例如单人房、双人房、双床房、家庭房)和多间客房的酒店。每个房间可以是房间类型的组合(例如,一个特定的房间可以是双人间/双床间)。

我面临的问题是如何根据已经预订的房间来确定房间的可用性。考虑一家有 2 间客房的酒店:

  • 单/双
  • 双人/家庭

我们有以下基本可用性:

  • 单人:1
  • 双数:2
  • 家庭:1

(是的,好像有四个房间,但只要可用性>1,就可以分配,这是我现在工作的前提)

通过这种方式,我可以出售任意组合的房间,并且只有当房间可用性计数器达到零时,它才会影响其他房间。例如。我可以出售双人房,但仍然可以选择单人房或家庭房。只有当另一个房间被出售时,一切都会关闭。

到目前为止,一切都很好。

除非我想出多个 S/D 房间(例如两个或更多)并单独出售它们(例如一个单间,然后是一个双人间),否则计数器不会达到 0(所以我不能将其用作关闭其他房间的触发器)但无论如何我已经售出了酒店拥有的最大数量的实体房间。

很明显,我在确定可用内容的方法上存在一些错误,如果此问题之前已解决,我将不胜感激(现在作为伪代码,我将转换为 MySQL/PHP 一次我已经明白了)。

谢谢

【问题讨论】:

  • 您是说您只是在减少与客户要求相对应的计数器吗?当您将 S/D 房间出售给要求 D 房间的客户时,您需要减少 S 和 D 的计数器。
  • 现在我是,是的。我意识到这是唯一的出路。我几乎已经使用分组函数让 SQL 工作了,但一直停留在...

标签: logic pseudocode business-logic


【解决方案1】:

我最终通过 SQL 解决了这个问题。

我的预订表包含一个 room_type_id 和一个 room_id。根据是否分配了房间,我要么加入数据透视表,然后加入 room_types 表,要么直接使用 room_type_id 加入 room_types 表。然后我只为每个元组 SUM() 1 ,谢天谢地,当你最后按 room_type.id 分组时返回正确的数量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多