2014-09-05 64 views
0

构建一个价格表我需要显示房企的表是这样的: enter image description here有效地从MySQL数据库

有18日期列,他们不会全部是相同的关税。在18列中,可能有1到6种不同的关税。出于这个原因,我在我的数据库中有关税和价格表。

tariff:  tariff_id  room_id 

price:  tariff_id  double_weekday  single_weekday  double weekend  single_weekend  extrabed 

然后有一个日期表:

dates:  date  tariff_id hotel_id  + some more fields 

我的问题是找到构建以高效的方式我的MySQL查询的最佳方式。显然,我不想为表中的每个单元格运行查询。

我已经开始查找适用于显示日期范围的关税。

$query_tariff = "SELECT tariff_id, date FROM dates WHERE (date BETWEEN '$firstdate' AND '$lastdate') AND hotel_id = '$hid'"; 

然后,我可以很容易地将该结果减少到唯一的tariff_id值。

然后,我有一个查询来获取所有对应于每个如果关税价格:

while ($row_tariff = mysql_fetch_assoc($tariff)) { 
$tariff_id = $row_tariff['tariff_id']; 
$query_price = "SELECT * FROM price WHERE tariff_id = '$tariff_id'"; 
} 

我的问题就来了下一阶段。当我连续写一行时,我怎么知道使用哪个价格?我有一种感觉,这可能需要数据透视表,但我已经完成了一些阅读并完全丢失了。或者也许解决方案在于使用数组,我能够理解的机会稍大一些。

回答

0

简单的办法是把它分解成类似(伪代码)

foreach room_type 
    // write row start & header 
    foreach interested_date 
     // write cell for the best rate/availability on this interested_date, for this room_type 
    next 
    // write row end 
next 

现在,你可以环上的两个查询的结果,或者你可以合并成一个怪物查询,用适当的逻辑写一个新的行结束/开始&标题

+0

问题是“foreach感兴趣的日期”内发生了什么。似乎我不得不在那里查询以获取价格信息。因此,如果有六种房间类型,那就是6×18 = 108个查询来显示表格一次。 – TrapezeArtist 2014-09-05 15:49:19

+0

或查询该房型的所有房价。就我个人而言,我将价格表设计为一种房价的一天房价。然后,您可以查询相关联接,其中可用日期位于搜索的开始日期和结束日期之间。 – 2014-09-05 16:01:12