【发布时间】:2018-08-29 09:16:12
【问题描述】:
我使用 Management Studio 创建了一个 SQL 视图。该视图将几个表连接在一起,并由我的 MVC 应用程序访问。这些表格与汽车租赁有关。一个表保存汽车详细信息,而另一个表保存预订信息,这些信息使用视图连接。
视图正常工作,但我被要求添加一列,显示汽车的下一个即时预订。这意味着我需要一个列来显示汽车 ID 匹配的下一个预订开始日期。
表格:汽车
- [ID]
- [注册]
- [制作]
- [型号]
表格:预订
- [ID]
- [预订开始日期]
- [预订结束日期]
- [车牌号]
查看:CarBookings
SELECT [C].[Id],
[C].[Registration],
[C].[Make],
[C].[Model],
[B].[BookingStartDate],
[B].[BookingEndDate]
FROM [Cars] AS C INNER JOIN [Bookings] AS B ON C.Id = B.CarId
如何在我的视图中添加一列以显示汽车的下一次预订?任何帮助表示赞赏。
【问题讨论】:
-
我没有看到任何逻辑可用于确定显示哪个第一个预订。您当前的视图将显示给定汽车的所有预订。一些示例数据在这里会有所帮助。
-
您能否详细说明“下一次立即预订”?这个逻辑是如何工作的?那存储在哪里?在这种情况下,您有哪些可用数据?您当前的 sql 应该只检索您的汽车和预订之间的所有相关实例,这意味着默认情况下您还将获得“下一个立即预订”,假设它存储在预订表中?
-
从问题看来,您似乎需要在当前日期时间或之后进行第一次预订?如果是这样,那么您可以使用 TOP or a LIMIT 和 order by。但该语法相当依赖于数据库。所以你可能想为你需要的数据库类型添加一个标签。
-
您只想显示汽车信息和下一次预订吗? (如前所述,您当前的查询当前显示所有预订,旧的和新的)