算法:如何组织多个参数的数据库搜索?

时间:2011-05-10 18:13:24

标签: php mysql sql algorithm merge

我需要创建一个搜索脚本,该脚本将查看房屋可用性日期表并匹配用户搜索输入。

这是示例数据:

House is available for rent in these two date ranges: 

[0] => Array
(
  [start_date] => 2011-01-01
  [end_date] => 2011-03-31
  [nb_of_people] => 6
  [price_per_night] => 100
)

[1] => Array
(
  [start_date] => 2011-04-01
  [end_date] => 2011-04-30
  [nb_of_people] => 7
  [price_per_night] => 110
)

我准备了在一个db记录中合并连续/重叠日期的脚本,因此结果如下所示:

(
  [start_date] => 2011-01-01
  [end_date] => 2011-04-30
  [availability_ids] => 0;1
)

更新:

计算不明确,所以我更新了帖子:

让我们说用户搜索了房子:

日期:2011-03-28至2011-04-08, 6人, 他愿意每晚花费90到108美元。

这是我对此搜索的手动计算:

  1. 日期与我们的合并日期间隔相匹配
  2. 用户想要入住的日期总数为:11天
  3. 2011-03-28至2011-03-31第一期的价格是3天* 100美元= 300美元
  4. 第二期201​​1-04-01至2011-04-08的价格为8天* $ 110 = $ 880
  5. 每晚总平均价格= 300 + 880/11 = $ 107.27
  6. 价格和人数匹配用户输入,所以我们显示这个房子

  7. 如果您合并日期并计算给定期间的每晚平均价格,搜索脚本应与上面提供的数据数组匹配。

    我的问题是:您将如何组织数据库中的数据以及搜索脚本算法应如何立即从数据库中检索结果。

    P.S。如果需要,我可以运行cron job来每天重新组织数据。

    感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

你手上有一个相当复杂的问题。

您假设客户可以在入住期间进行切换。他们可能不想。你拥有的例子让他们感动。你问过他们这是不是很好吗?

你也可能认为他们住在不同的房子里是对的。两个房子每个都有3个空间,或者他们只想要一个房子,每个人都可以在一起吗?他们和他们不认识的人共用宿舍吗?

我会看看你的假设(这些只是一些例子;我相信还有更多)并考虑你是否想要混合他们的偏好。然后,这将引导您如何组合查询结果 - 或者更重要的是,如何组合它们。