我需要显示一个像这样的房间价格表:
有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 :(得分: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
现在,你可以循环两个查询的结果,或者你可以组合成一个怪物查询,用适当的逻辑来写一个新的行结束/开始&头