从MySQL数据库高效构建价格表

时间:2014-09-05 14:58:50

标签: php mysql database

我需要显示一个像这样的房间价格表: enter image description here

有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'";
}

我的问题出现在下一阶段。当我在一行中写下每一行时,我如何知道使用哪个价格?我有一种感觉,这可能需要数据透视表,但我已经对此做了一些阅读并完全丢失了。或者解决方案可能在于使用数组,我有更好的理解能力。

1 个答案:

答案 0 :(得分: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

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