订单表和子订单表的问题

Jon 2015-06-04 10:48:28
数据库中设计了2个表,订单表和子订单表,是一对多的关系。
基本结构如下:
订单表:
订单编号,订单性质,订单状态

子订单表
子订单编号,订单编号,本单金额,执行日期,子订单状态
(同一订单下的子订单执行日期不同,也就是说每个订单每天最多执行一个子订单,每个订单至少包含1个子订单。)

订单总额 =子订单数量×每单金额
每单子订单完成时,代表该单金额已被消费

现需要在对订建立订单查询,查询结果中需要有如下信息
订单开始日期,订单结束日期,订单总额,订单已消费金额,子订单期数,剩余期数(未执行的子订单数量)

刚开始我将这些信息都硬性的在订单表中用字段存储,但是子订单经常变动(临时删除,临时改期,临时价格变动等等),每一次子订单信息变动订单表都要做太多的改变,所以我就讲数据库改成现在的结构,这样子订单怎么变都不影响订单表,但是查询又不知道要怎么搞才能获取我所需要的所有信息,如何在数据库中建立相应视图以供查询?

求各位大神赐教!!
...全文
1416 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
还在加载中灬 2015-06-04
  • 打赏
  • 举报
回复
空间与时间的转化
时间与时间的挪移

你之前的麻烦,使你查询时候的方便

你现在的表结构,除了查询时,再去统计,你觉得有好的方式吗?

持久化视图也是一种解决方案
Tiger_Zhao 2015-06-04
  • 打赏
  • 举报
回复
    SELECT 订单编号,
MIN(执行日期) 订单开始日期,
MAX(执行日期) 订单结束日期,
SUM(本单金额) 订单总额,
SUM(CASE WHEN 子订单状态='已执行'
THEN 本单金额
ELSE 0
END) 订单已消费金额,
COUNT(*) 子订单期数,
SUM(CASE WHEN 子订单状态='未执行'
THEN 1
ELSE 0
END) 剩余期数
FROM 子订单表
GROUP BY 订单编号

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧