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

Php 算法:如何使用多个参数组织数据库搜索?,php,mysql,sql,algorithm,merge,Php,Mysql,Sql,Algorithm,Merge,我需要创建一个搜索脚本,该脚本将查看房屋可用日期表并匹配用户搜索输入 以下是示例数据: 我准备了一个脚本,将连续/重叠的日期合并到一个db记录中,因此结果如下所示: ( [start_date] => 2011-01-01 [end_date] => 2011-04-30 [availability_ids] => 0;1 ) 更新: 计算不清楚,所以我更新了帖子: 假设用户搜索房屋: 日期:2011-03-28至2011-04-08, 6个人,, 他愿意每晚花费

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

以下是示例数据:

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

(
  [start_date] => 2011-01-01
  [end_date] => 2011-04-30
  [availability_ids] => 0;1
)
更新: 计算不清楚,所以我更新了帖子:

假设用户搜索房屋:

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

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

日期与合并日期间隔相匹配 用户希望停留的日期总数为:11天 2011年3月28日至2011年3月31日的第一期价格为3天*$100=$300 2011-04-01至2011-04-08第二期的价格为8天*$110=$880 每晚总平均价格=300+880/11=$107.27 价格和人数与用户输入相匹配,所以我们显示这所房子 如果合并日期并计算给定期间每晚的平均价格,则搜索脚本应匹配上面提供的数据数组

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

另外,如果需要的话,我可以运行cron作业来每日重新组织数据


谢谢你的建议。

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

你假设顾客在他们的逗留时间中转过来是对的。他们可能不想。你举的例子让他们移动。你问过他们这是否合适吗

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


我会看看你的假设,这些只是一些例子;我肯定还有更多的考虑你是否愿意混合他们的喜好。然后,这将引导您如何组合查询结果,或者更重要的是,如何不组合它们

不要认为这里的平均值是可以计算的,从某种意义上说,它仍然是公平的。例如,如果一个每晚花费1美元,另一个每晚花费209美元,那么平均值仍然是105美元,但是对于用户来说,每晚支付几乎两倍的费用是没有意义的。使用x%偏差方法可以更好地帮助您。这对你来说可以吗?嗯,用户必须点击一所房子才能预订。这样,他将看到完整的可用日期和价格表。我的任务是在搜索结果中为他找回这所房子,因为它实际上与他的号码相符。你的解决方案是什么@Mel?我会设置一个偏差,比如10%。因此,如果用户指示105/晚,我们将可接受的价格范围设置为90%*105到110%*105。这样,在数据库中查询就很容易了。如果要显示所有便宜的,也只能使用上限。或者是30%的下限,而不是10%的上限。这要看情况了。就我个人而言,如果我想要500美元的房间,我不需要看300美元的房间,因为它们低于我的标准。你好@Mel,我理解你的观点。这是我的错,我没有提到最低和最高的价格用户想要支付租金。我们在搜索中有这个选项。我刚刚更新了上面我原来的帖子。请看一看。谢谢。你好@John,谢谢你的想法。我们会假设房子的主人不能预定他的房子,所以他绝对可以在他空闲的时间内租房子。没有人会要求客户搬出去或住在不同的房子里。这是同一栋房子,只是不同时期的价格不同。我们需要找出用户的搜索是否与综合平均价格相匹配。请注意:我刚刚在我的第一篇文章中更新了信息。请看一看。如果他想提供此选项,他仍然需要为复杂的情况编写代码,并且可以简单地提供排除此事件的选项。就像我可以选择连续飞行或1或2次中途停留。你仍然需要为可能的中途停留编写代码。@Mel:处理中途停留和不中途停留都非常复杂。假设裁员没有给予排除他们的选择那么复杂。
(
  [start_date] => 2011-01-01
  [end_date] => 2011-04-30
  [availability_ids] => 0;1
)