简化多层分组关联计算的sql

这篇博客介绍了如何使用SQL简化多层分组和关联计算,以解决计算Branch表中满足特定条件的记录问题。通过过滤丢失和未归还的DVD拷贝,对DVDCopy表按BID分组,计算每个门店的DVD分类数量,并找出分类数量小于4的门店。同时,考虑了未在DVDCopy表中出现的门店,通过集算器的高效操作实现了这一复杂逻辑,提供了比SQL更简洁的解决方案。
摘要由CSDN通过智能技术生成
   在数据库应用开发中,我们经常需要面对复杂的SQL式计算,比如多层分组中的关联计算。由于SQL分组时必须同时汇总,并且不能进行对象式关联访问,因此处理这类问题会比较复杂,只能用窗口函数嵌套多层的子查询的高级技巧来实现。集算器支持真正的分组,直观的对象式关联访问,解决这类问题更加容易。
   分组关联在实际业务中遇到的较多,比如http://forums.bit-tech.net/showthread.php?t=207052。下面以链接中的实际业务为蓝本设计一个更通用的例子,用来说明集算器实现分组关联的具体过程。
   计算目标:查询出缺货的DVD分店,即现存的DVD拷贝不到4类的分店。
   数据结构:Branch表,存储DVD分店信息。DVD表,存储DVD的标题及分类信息,DVD是虚拟的数据,比如“变形金刚4”是一个DVD,但它不是一张可见的光盘。DVDCopy表,存储DVD的多张拷贝,DVD拷贝是真正的光盘,以实体形式存放于各个分店。注意:DVDCopy表以BranchID字段和Branch表关联,以DVDID字段和DVD表关联。下面是部分数据:

   Branch表:


   DVD表:


   DVDCopy表:


   说明:
    (1)计算结果应当是Branch表中的某些记录。

    (2)DVDCopy表中的Status字段如果是“Miss”,则说明光盘丢失。LastDateReturned字段如果为空,则说明光盘借出尚未归还。显然,丢失或未归还的光盘不在计算范围内,应当过滤掉。

    (3)应当考虑某些分店可能在DVDCopy表中不存在记录,虽然这种情况比较罕见。

   思路
    (1)从DVDCopy表过滤出有效的、

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值