考虑以下场景(如果它有助于思考 Northwind Orders / OrderDetails)。
我有两个表 LandingHeaders 和 LandingDetails,它们记录了有关商业钓鱼之旅的详细信息。通常,在一周的时间里,一艘渔船可以多次出海,因此最终会得到多个 LandingHeader/LandingDetail 记录。
在每周结束时,购买这些钓鱼之旅结果的公司需要计算出每艘船每次上岸的价值,然后向该船的所有者支付任何应付的款项。更有趣的是,有些船只归同一个人所有,因此购买鱼的公司更愿意将特定个人拥有的所有船只的所有上岸价值合并为一笔付款。
到目前为止,执行此任务所需的信息更多地分布在简单的主从表结构中,因此它需要多个存储过程(以及在执行工作的主应用程序中明智地使用字典)来实现所需的最终结果。我无法控制的外部环境迫使一些重大的数据库更改,我借此机会重组了 LandingHeader 表,使其包含可能需要的所有必要信息。
从登陆 Header 表中,我需要记录以下字段;
- sql 类型 int 的 LandingHeaderId
- sql 类型 int 的 VesselOwnerId
- sql类型datetime的LandingDate(实际只用作查询的一部分)
从 LandingDetails 表中,我需要记录以下字段;
- sql 类型 int 的 ProductId
- sql类型十进制数(10,2)
- sql类型money的UnitPrice
我一直在考虑创建一个以参数 VesselOwnerID、SartDate 和 EndDate 为参数的查询。
作为输出,我需要知道哪些 LandingId 与所有者相关联,以及每个 Distinct ProductId 的总数量(以及在所选时间段内每个 ProductId 相同的 UnitPrice)分布在与 LandingHeaders 相关联的各种landingDetails 上特定时期。
这种事情可以通过标准的主从类型表关系来完成,还是我仍然需要求助于多个存储过程。
一个长期的目标是有一个查询可以用来生成 xml,该 xml 可以适用于 web api。