我正在研究数据库,但遇到问题(总菜鸟)。我无法在此帐户上发布图片,我已发布指向我图片的链接。基本上,我有一张预订桌和一张房间桌。我想对每个房间进行日期差异操作,并将其乘以租金价格,并按房间号码分组。在我隐藏日期差异之后,我试图做出的最终结果是这样的,因为我只需要它进行计算。
<!DOCTYPE html>
<html>
<body>
<table style="width:100%">
<tr>
<th>Room Number</th>
<th>Total</th>
</tr>
<tr>
<td>1</td>
<td>375</td>
</tr>
<tr>
<td>2</td>
<td>375</td>
</tr>
<tr>
<td>3</td>
<td>1680</td>
</tr>
<tr>
<td>4</td>
<td>700</td>
</tr>
<tr>
<td>6</td>
<td>60</td>
</tr>
<tr>
<td>7</td>
<td>540</td>
</tr>
</table>
</body>
</html>
我有这个作为我的SQL查询:
SELECT [Room Number],
DATEDIFF("d", min(CheckInDate), max(CheckOutDate)) as dif
FROM Reservations
GROUP by [Room Number]
我还没有计算金钱部分的计算,因为我甚至无法让Datediff为每个房间工作。
我认为您需要为每个房间 - 客户对计算日期,然后按room_id进行分组。您可以在后面或在组中使用多个价格。我不知道ms-access,但是通过sql逻辑它应该看起来像:
SELECT [Room Number], SUM(DATEDIFF("d", CheckInDate, CheckOutDate)) * price_per_night as dif
FROM Reservations
GROUP by [Room Number]
假设您的预订存储在名为预订的表格中,房间信息存储在名为Rooms的表格中。如果您想要包括所有房间,无论是否已预订,请使用以下方法:
SELECT Rooms.[Room Number], Sum((Reservations.CheckOutDate-Reservations.CheckInDate)*Rooms.Price) AS [Total per room]
FROM Reservations RIGHT JOIN Rooms ON Reservations.[Room Number] = Rooms.[Room Number]
GROUP BY Rooms.[Room Number];
如果您只对预订的房间感兴趣,请通过INNER JOIN替换RIGHT JOIN。
PS你的HTML示例对于7号房间来说是错误的,它应该是1080(9 * 120)。