我需要查询一个小的酒店预订系统,我需要一个查询,以获得一个特定的日期和总费用的房间可用的帮助。
表如下所示:
+--------+------------+-------+--------+-------+------------------+
| RoomId | Date | ResID | Rate | Tax | DailyCleaningFee |
+--------+------------+-------+--------+-------+------------------+
| 1 | 2019-01-01 | 0 | 100 | 0.130 | 30 |
+--------+------------+-------+--------+-------+------------------+
resid决定是否在特定日期预订房间。0是可用的房间。我想查询2晚的所有客房的具体美食,它还应返回房间的总价格,包括清洁费和税费,结果如下表所示:
+---------+------------+
| RoomId | TotalRate |
+-------- +------------+
如果我想查询2019-01-02和2019-01-03两个晚上的表,还应该排除tax为空和/或rate设置为0的记录。我的查询是什么样的?
真的很感谢我能得到的任何帮助。谢谢您!
edit:我在表的一个示例中添加了db fiddle链接。
1条答案
按热度按时间j1dl9f461#
你的问题缺少准确回答的信息。但是我想我可以帮助你理解你的查询应该是什么样的,以得到预期的结果。见下文。
这是可行的,因为对于您要搜索的每个日期(这里您提到了两天),您需要有一个内部查询,然后您需要通过
RoomId
收集所有提供日期的可用房间。之后,只有你才能计算出最终的利率。您可能需要修改您没有明确提及的计税公式。
编辑:(2018-12-01)
上述查询仅在两天内显式有效。
要计算任意连续天数的总费率,可以使用以下查询。
请注意,日期包含在两个边界中。用日期参数替换硬编码日期。在
HAVING
我们检查一个房间是否有连续的可用天数,并且只过滤这些天数。根据@strawberry的说法,在给定的表格中存储房间费用可能不是一种有效的方法。您可能需要稍微更改模式以使其获得更高的性能。